private void MoveEffectables(Dir4 dir, float moveAmount)
 {
     foreach (StandEffectable effectable in carryEffector.GetEffectables())
     {
         PhysicsMovement movement = effectable.GetComponent <PhysicsMovement>();
         movement.TryToMove(moveAmount, dir);
     }
 }
Example #2
0
    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);
    }
Example #4
0
    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();
            }
        }
    }