private void MoveEffectables(Dir4 dir, float moveAmount) { foreach (StandEffectable effectable in carryEffector.GetEffectables()) { PhysicsMovement movement = effectable.GetComponent <PhysicsMovement>(); movement.TryToMove(moveAmount, dir); } }
internal void MoveUpdate(Vector2 moveVelocity) { velocity.Value = moveVelocity; Vector2 deltaPosition = velocity.DeltaPosition; Vector2 moveAmount = movement.TryToMove(deltaPosition); velocity.ResolveCollisionY(moveAmount.y); gravity.ApplyGravity(); }
public float Move(float distance, Dir4 dir) { float moveAmount = movement.TryToMove(distance, dir); if (dir != Dir4.up) { MoveEffectables(dir, moveAmount); } return(moveAmount); }
private void MoveForwardUpdate() { float forwardTileSpeed = rotationFramesLeft == 0 ? moveTileSpeed : edgeMoveTileSpeed; Vector2 forwardDeltaMove = TileHelpers.TileToWorld(forwardTileSpeed) * rotation.GetFrontVector() * Time.deltaTime; Vector2 moveAmount = movement.TryToMove(forwardDeltaMove); if (raycaster.HasWallInFront()) { ReverseSnail(); } else if (raycaster.HasNoColliderBelow()) { if (goAround) { RotateSnail90(); } else { ReverseSnail(); } } }