chore: paddle and ball tweens updated for smoother gameplay
This commit is contained in:
parent
ceea23c5ae
commit
5d8f5d39be
@ -68,7 +68,12 @@ public class BallBehaviour : Behaviour2D, IFirstFrameUpdate, IPhysicsUpdate, INe
|
|||||||
void IPacketListenerClient<BallResetPacket>.OnClientPacketArrived(IConnection sender, BallResetPacket packet) => ResetBall();
|
void IPacketListenerClient<BallResetPacket>.OnClientPacketArrived(IConnection sender, BallResetPacket packet) => ResetBall();
|
||||||
void IPacketListenerClient<BallUpdatePacket>.OnClientPacketArrived(IConnection sender, BallUpdatePacket packet)
|
void IPacketListenerClient<BallUpdatePacket>.OnClientPacketArrived(IConnection sender, BallUpdatePacket packet)
|
||||||
{
|
{
|
||||||
networkTween = Transform.TweenPositionAdditive(tweenManager, .25f, Transform.Position.FromTo(packet.Position));
|
Vector2D localToServerPosition = Transform.Position.FromTo(packet.Position);
|
||||||
|
if (localToServerPosition.MagnitudeSquared < 4f)
|
||||||
|
networkTween = Transform.TweenPositionAdditive(tweenManager, .25f, localToServerPosition);
|
||||||
|
else
|
||||||
|
Transform.Position = packet.Position;
|
||||||
|
|
||||||
RigidBody.Velocity = packet.Velocity;
|
RigidBody.Velocity = packet.Velocity;
|
||||||
physicsEngine2D.StepIndividual(RigidBody, sender.Ping);
|
physicsEngine2D.StepIndividual(RigidBody, sender.Ping);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ using Syntriax.Engine.Core;
|
|||||||
using Syntriax.Engine.Network;
|
using Syntriax.Engine.Network;
|
||||||
using Syntriax.Engine.Physics2D;
|
using Syntriax.Engine.Physics2D;
|
||||||
using Syntriax.Engine.Systems.Input;
|
using Syntriax.Engine.Systems.Input;
|
||||||
|
using Syntriax.Engine.Systems.Tween;
|
||||||
|
|
||||||
namespace Pong.Behaviours;
|
namespace Pong.Behaviours;
|
||||||
|
|
||||||
@ -28,6 +29,9 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
|
|||||||
private IRigidBody2D rigidBody = null!;
|
private IRigidBody2D rigidBody = null!;
|
||||||
private IPhysicsEngine2D physicsEngine2D = null!;
|
private IPhysicsEngine2D physicsEngine2D = null!;
|
||||||
|
|
||||||
|
private ITween? networkTween = null;
|
||||||
|
private ITweenManager tweenManager = null!;
|
||||||
|
|
||||||
public void PhysicsIterate(float delta)
|
public void PhysicsIterate(float delta)
|
||||||
{
|
{
|
||||||
if (isUpPressed)
|
if (isUpPressed)
|
||||||
@ -48,6 +52,7 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
|
|||||||
networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>();
|
networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>();
|
||||||
networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
|
networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
|
||||||
rigidBody = BehaviourController.GetRequiredBehaviour<IRigidBody2D>();
|
rigidBody = BehaviourController.GetRequiredBehaviour<IRigidBody2D>();
|
||||||
|
tweenManager = Universe.FindRequiredBehaviour<ITweenManager>();
|
||||||
|
|
||||||
inputs?.RegisterOnPress(Up, OnUpPressed);
|
inputs?.RegisterOnPress(Up, OnUpPressed);
|
||||||
inputs?.RegisterOnRelease(Up, OnUpReleased);
|
inputs?.RegisterOnRelease(Up, OnUpReleased);
|
||||||
@ -83,6 +88,11 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
|
|||||||
{
|
{
|
||||||
isUpPressed = packet.IsUpPressed;
|
isUpPressed = packet.IsUpPressed;
|
||||||
isDownPressed = packet.IsDownPressed;
|
isDownPressed = packet.IsDownPressed;
|
||||||
|
|
||||||
|
Vector2D localToServerPosition = Transform.Position.FromTo(packet.Position);
|
||||||
|
if (localToServerPosition.MagnitudeSquared < 1f)
|
||||||
|
networkTween = Transform.TweenPositionAdditive(tweenManager, .25f, localToServerPosition);
|
||||||
|
else
|
||||||
Transform.Position = packet.Position;
|
Transform.Position = packet.Position;
|
||||||
|
|
||||||
physicsEngine2D.StepIndividual(rigidBody, sender.Ping);
|
physicsEngine2D.StepIndividual(rigidBody, sender.Ping);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user