Ejemplo n.º 1
0
    private Vector3 CalculateDirectionBasedOnInput(CubioInput cubioInput)
    {
        Vector3   direction       = new Vector3();
        Spatial   camera          = GetNode("Target/Camera") as Spatial;
        Transform cameraTransform = camera.GlobalTransform;

        if (cubioInput.MoveForward)
        {
            direction += -cameraTransform.basis[2];
        }
        if (cubioInput.MoveBackWards)
        {
            direction += cameraTransform.basis[2];
        }

        if (cubioInput.MoveLeft)
        {
            direction += -cameraTransform.basis[0];
        }
        if (cubioInput.MoveRight)
        {
            direction += cameraTransform.basis[0];
        }

        return(direction);
    }
Ejemplo n.º 2
0
    public override void _PhysicsProcess(float delta)
    {
        CubioInput cubioInput = ListenToInput();

        if (cubioInput.ResetPosition)
        {
            Translation = InitialPosition;
        }

        Vector3 direction = CalculateDirectionBasedOnInput(cubioInput);

        direction.y = 0;
        direction   = direction.Normalized();

        Vector3 newVelocity = calculateNewVelocity(direction, delta);

        _velocity.x = newVelocity.x;
        _velocity.z = newVelocity.z;

        _velocity = MoveAndSlide(_velocity, Vector3.Up);

        if (IsOnFloor() && cubioInput.Jump)
        {
            _velocity.y = JumpSpeed;
        }
    }