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<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;
|
||||
physicsEngine2D.StepIndividual(RigidBody, sender.Ping);
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ using Syntriax.Engine.Core;
|
||||
using Syntriax.Engine.Network;
|
||||
using Syntriax.Engine.Physics2D;
|
||||
using Syntriax.Engine.Systems.Input;
|
||||
using Syntriax.Engine.Systems.Tween;
|
||||
|
||||
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 IPhysicsEngine2D physicsEngine2D = null!;
|
||||
|
||||
private ITween? networkTween = null;
|
||||
private ITweenManager tweenManager = null!;
|
||||
|
||||
public void PhysicsIterate(float delta)
|
||||
{
|
||||
if (isUpPressed)
|
||||
@ -48,6 +52,7 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
|
||||
networkClient = Universe.FindBehaviour<INetworkCommunicatorClient>();
|
||||
networkServer = Universe.FindBehaviour<INetworkCommunicatorServer>();
|
||||
rigidBody = BehaviourController.GetRequiredBehaviour<IRigidBody2D>();
|
||||
tweenManager = Universe.FindRequiredBehaviour<ITweenManager>();
|
||||
|
||||
inputs?.RegisterOnPress(Up, OnUpPressed);
|
||||
inputs?.RegisterOnRelease(Up, OnUpReleased);
|
||||
@ -83,6 +88,11 @@ public class PaddleBehaviour(Keys Up, Keys Down, float High, float Low, float Sp
|
||||
{
|
||||
isUpPressed = packet.IsUpPressed;
|
||||
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;
|
||||
|
||||
physicsEngine2D.StepIndividual(rigidBody, sender.Ping);
|
||||
|
Loading…
x
Reference in New Issue
Block a user