public PassengerMovement(Transform _transform, Vector2 _velocity, bool _moveBefore, ForceDir _dir)
 {
     transform  = _transform;
     velocity   = _velocity;
     moveBefore = _moveBefore;
     dir        = _dir;
 }
    public override void Move(Vector2 velocity, ForceDir forceDir)
    {
        UpdateRaycastOrigins();

        CalculatePassengerMovement(velocity);

        MovePassengers(true);
        transform.Translate(velocity);
        MovePassengers(false);
    }
예제 #3
0
 public abstract void Move(Vector2 velocity, ForceDir forceDir);
예제 #4
0
    public override void Move(Vector2 velocity, ForceDir forceDir)
    {
        // Prepare the collisions/raycasts
        collisionState.Reset();

        UpdateRaycastOrigins();
        collisionState.prevVelocity = velocity;

        // Calculate velocity
        if (velocity.y < 0f)
        {
            DecendSlope(ref velocity);
        }

        if (velocity.x != 0f)
        {
            HorizontalCollisions(ref velocity);
        }

        if (velocity.y != 0f)
        {
            VerticalCollisions(ref velocity);
        }

        // Movement was applied by another object
        if (forceDir != ForceDir.Self)
        {
            if (forceDir == ForceDir.Below)
            {
                collisionState.below = true;
            }

            if (forceDir == ForceDir.Above)
            {
                collisionState.above = true;
            }

            if (forceDir == ForceDir.Left)
            {
                collisionState.left = true;
            }

            if (forceDir == ForceDir.Right)
            {
                collisionState.right = true;
            }
        }

        // Apply the calculated velocity
        transform.Translate(velocity);

        // Check for the previous collisions
        UpdateRaycastOrigins();
        CheckPrevCollisions();

        // oneWayPlatforms
        if (velocity.y > 0.0f || collisionState.below)
        {
            ignoredOneWayPlatform = null;
        }

        ignoreOneWayPlatforms = false;
    }