Ejemplo n.º 1
0
    private void WorkOutDirAndSpeed()
    {
        bool moveX, moveY;

        moveX = !(transform.position.x == endPosition.x);
        moveY = !(transform.position.z == endPosition.y);
        if (moveX)
        {
            axis = MoveAxis.X;
        }
        else if (moveY)
        {
            axis = MoveAxis.Y;
        }

        float distance = 0;

        switch (axis)
        {
        case MoveAxis.X:
            distance = Mathf.Abs(transform.position.x - endPosition.x);
            break;

        case MoveAxis.Y:
            distance = Mathf.Abs(transform.position.z - endPosition.y);
            break;
        }

        speed *= distance;
    }
Ejemplo n.º 2
0
    private Vector2 GetMoveVector(MoveAxis axis)
    {
        Vector2 resultInputVector = Vector2.zero;
        float   yInput            = Input.GetAxisRaw("Vertical");
        float   xInput            = Input.GetAxisRaw("Horizontal");

        switch (axis)
        {
        case MoveAxis.Horizontal:
            CheckGround();
            rb.gravityScale   = initialGravity;
            resultInputVector = new Vector2(xInput * moveSpeed, rb.velocity.y);
            break;

        case MoveAxis.Free:
            onGround          = false;
            rb.gravityScale   = 0f;
            resultInputVector = new Vector2(xInput, yInput) * moveSpeed;
            break;

        default:
            break;
        }

        return(resultInputVector);
    }
Ejemplo n.º 3
0
 private void Start()
 {
     iconMaster = this.gameObject.GetComponent <PlayerIcons>().iconmaster;
     rotation   = Quaternion.Euler(angles);
     Horizontal = new MoveAxis(controls.right, controls.left);
     Vertical   = new MoveAxis(controls.up, controls.down);
     anim       = GetComponentInChildren <Animator>();
 }
Ejemplo n.º 4
0
    public static float GetAxis(MoveAxis moveAxis)
    {
        var value = moveAxis == MoveAxis.Horizontal ? _instance._moveJoystick.Horizontal : _instance._moveJoystick.Vertical;

        if (value == 0)
        {
            value = Input.GetAxis(moveAxis.ToString());
        }
        return(value);
    }
Ejemplo n.º 5
0
        /// <summary> Returns a unit vector representing the chosen movement axis. </summary>
        /// <param name="axis"></param>
        /// <returns></returns>
        public static Vector3 GetAxis(MoveAxis axis)
        {
            Vector3 res = Vector3.zero;
            int     ax  = (int)axis;

            if (ax > 2)
            {
                ax -= 3;
            }
            res[ax] = 1;
            return(res);
        }
Ejemplo n.º 6
0
    public static Vector3 GetVector(MoveAxis axis)
    {
        Vector3 res = Vector3.zero;

        if (IsNegative(axis))
        {
            res[(int)axis - 3] = -1;
        }
        else
        {
            res[(int)axis] = 1;
        }
        return(res);
    }
    public static System.Tuple <Vector2, Vector2> SetMoveValues(MoveAxis moveAxis)
    {
        Vector2 positiveDir;
        Vector2 negativeDir;

        if (moveAxis == MoveAxis.X)
        {
            positiveDir = Vector2.right;
            negativeDir = Vector2.left;
        }
        else
        {
            positiveDir = Vector2.up;
            negativeDir = Vector2.down;
        }

        return(System.Tuple.Create(positiveDir, negativeDir));
    }
Ejemplo n.º 8
0
 public static int AxisIndex(MoveAxis axis)
 {
     return(IsNegative(axis) ? (int)axis - 3 : (int)axis);
 }
Ejemplo n.º 9
0
 public static bool IsNegative(MoveAxis axis)
 {
     return(axis >= MoveAxis.NegativeX);
 }
Ejemplo n.º 10
0
        public bool Move(float amount, MoveAxis axis, params IBodCollidable[] collidables)
        {
            bool maintainMomentum = true;

            if (amount == 0)
            {
                return(false);
            }

            Vector2 moveVector;

            if (axis == MoveAxis.H)
            {
                moveVector = Vector2.right;
            }
            else if (axis == MoveAxis.V)
            {
                moveVector = Vector2.up;
            }
            else
            {
                throw new System.Exception("Unknown MoveAxis " + axis);
            }

            int intAmount = Round(position.x + amount) - Round(position.x);

            if (intAmount == 0)
            {
                intAmount = amount < 0 ? -1 : 1;
            }
            while (intAmount != 0)
            {
                bool hit = false;
                for (int i = 0; i < collidables.Length; i++)
                {
                    // if (collidables[i].HitRect(roundPosition + moveVector * intAmount, size) != null) {
                    if (collidables[i].HitRect(Round(position + moveVector * amount), size) != null)
                    {
                        hit = true;
                        break;
                    }
                }
                if (hit)
                {
                    maintainMomentum = false;
                    if (intAmount > 0)
                    {
                        intAmount--;
                        amount--; if (amount < 0)
                        {
                            amount = 0;
                        }
                    }
                    if (intAmount < 0)
                    {
                        intAmount++;
                        amount++; if (amount > 0)
                        {
                            amount = 0;
                        }
                    }
                }
                else
                {
                    position += moveVector * amount;
                    break;             // done moving!
                }
            }

            if (!maintainMomentum)
            {
                if (axis == MoveAxis.H)
                {
                    position = new Vector2(roundPosition.x, position.y);
                }
                if (axis == MoveAxis.V)
                {
                    position = new Vector2(position.x, roundPosition.y);
                }
            }

            return(maintainMomentum);
        }