示例#1
0
    private void ReadControlAxes()
    {
        if (ControlManager.NoControlsPressed)
        {
            Motion.HaltEntity();
            return;
        }

        float verticalDirection   = ControlManager.GetAxis(VerticalAxis);
        float horizontalDirection = ControlManager.GetAxis(HorizontalAxis);

        MotionDirection direction = MotionDirection.None;

        if (verticalDirection > 0.0f)
        {
            if (Mathf.Abs(horizontalDirection - 0.0f) < 0.001f)
            {
                direction = MotionDirection.North;
            }
            else if (horizontalDirection > 0.0f)
            {
                direction = MotionDirection.NorthEast;
            }
            else if (horizontalDirection < 0.0f)
            {
                direction = MotionDirection.NorthWest;
            }
        }
        else if (verticalDirection < 0.0f)
        {
            if (Mathf.Abs(horizontalDirection - 0.0f) < 0.001f)
            {
                direction = MotionDirection.South;
            }
            else if (horizontalDirection > 0.0f)
            {
                direction = MotionDirection.SouthEast;
            }
            else if (horizontalDirection < 0.0f)
            {
                direction = MotionDirection.SouthWest;
            }
        }
        else if (Mathf.Abs(verticalDirection - 0.0f) < 0.001f)
        {
            if (horizontalDirection > 0.0f)
            {
                direction = MotionDirection.East;
            }
            else if (horizontalDirection < 0.0f)
            {
                direction = MotionDirection.West;
            }
        }

        FormattedDebugMessage(LogLevel.Info, "Vertical: {0} Horizontal: {1} D-Value: {2}", verticalDirection, horizontalDirection, direction.ToString());

        Motion.RotateEntity(direction);
        Motion.MoveEntity();
    }