Exemplo n.º 1
0
        /// <summary>
        /// Randomize the rotate direction.
        /// </summary>
        private void RandomizeTheRotateDirection()
        {
            // NOTE(jenchieh): see JCS_Vector3Direction.cs enum.
            // there are 0 ~ 26 options.
            int directionSize = JCS_Random.Range(0, 26);

            mRotateDirection = (JCS_Vector3Direction)directionSize;
        }
        /// <summary>
        /// Set on top of the box above the ray.
        /// </summary>
        /// <param name="cap"></param>
        /// <param name="maxDistance"></param>
        public static bool SetOnTopOfClosestBoxWithRay(
            CharacterController cap,
            float maxDistance,
            JCS_Vector3Direction inDirection)
        {
            Vector3 direction = cap.transform.TransformDirection(JCS_Util.VectorDirection(inDirection));

            RaycastHit[] hits = Physics.RaycastAll(cap.transform.position, direction, maxDistance);

            /* Nothing detected. */
            if (hits.Length == 0)
            {
                return(false);
            }

            foreach (RaycastHit hit in hits)
            {
                /* Check if there are box collider on hit. */
                BoxCollider boxCollider = hit.transform.GetComponent <BoxCollider>();
                if (boxCollider == null)
                {
                    continue;
                }

                /* Check ray ignore attached. */
                JCS_RayIgnore ri = hit.transform.GetComponent <JCS_RayIgnore>();
                if (ri != null)
                {
                    continue;
                }

                // set on top of that box
                SetOnTopOfBox(cap, boxCollider);

                return(true);
            }

            return(false);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Return direction of Unity's Vector system.
        /// </summary>
        /// <param name="direction"> direction u wants. </param>
        /// <returns> vector value. </returns>
        public static Vector3 VectorDirection(JCS_Vector3Direction direction)
        {
            switch (direction)
            {
            case JCS_Vector3Direction.CENTER:
                return(Vector3.zero);

            case JCS_Vector3Direction.UP:
                return(Vector3.up);

            case JCS_Vector3Direction.DOWN:
                return(Vector3.down);

            case JCS_Vector3Direction.FORWARD:
                return(Vector3.forward);

            case JCS_Vector3Direction.BACK:
                return(Vector3.back);

            case JCS_Vector3Direction.RIGHT:
                return(Vector3.right);

            case JCS_Vector3Direction.LEFT:
                return(Vector3.left);

            case JCS_Vector3Direction.FORWARD_LEFT:
                return(new Vector3(-1, 0, 1));

            case JCS_Vector3Direction.FORWARD_RIGHT:
                return(new Vector3(1, 0, 1));

            case JCS_Vector3Direction.BACK_LEFT:
                return(new Vector3(-1, 0, -1));

            case JCS_Vector3Direction.BACK_RIGHT:
                return(new Vector3(1, 0, -1));

            case JCS_Vector3Direction.UP_LEFT:
                return(new Vector3(-1, 1, 0));

            case JCS_Vector3Direction.UP_RIGHT:
                return(new Vector3(1, 1, 0));

            case JCS_Vector3Direction.FORWARD_UP:
                return(new Vector3(0, 1, 1));

            case JCS_Vector3Direction.FORWARD_DOWN:
                return(new Vector3(0, -1, 1));

            case JCS_Vector3Direction.BACK_UP:
                return(new Vector3(0, 1, -1));

            case JCS_Vector3Direction.BACK_DOWN:
                return(new Vector3(0, -1, -1));

            case JCS_Vector3Direction.DOWN_LEFT:
                return(new Vector3(-1, -1, 0));

            case JCS_Vector3Direction.DOWN_RIGHT:
                return(new Vector3(1, -1, 0));

            case JCS_Vector3Direction.FORWARD_UP_LEFT:
                return(new Vector3(-1, 1, 1));

            case JCS_Vector3Direction.FORWARD_UP_RIGHT:
                return(new Vector3(1, 1, 1));

            case JCS_Vector3Direction.FORWARD_DOWN_LEFT:
                return(new Vector3(-1, -1, 1));

            case JCS_Vector3Direction.FORWARD_DOWN_RIGHT:
                return(new Vector3(1, -1, 1));

            case JCS_Vector3Direction.BACK_UP_LEFT:
                return(new Vector3(-1, 1, -1));

            case JCS_Vector3Direction.BACK_UP_RIGHT:
                return(new Vector3(1, 1, -1));

            case JCS_Vector3Direction.BACK_DOWN_LEFT:
                return(new Vector3(-1, -1, -1));

            case JCS_Vector3Direction.BACK_DOWN_RIGHT:
                return(new Vector3(1, -1, -1));
            }

            JCS_Debug.LogError("This cannot happed.");

            // this cannot happens
            return(Vector3.zero);
        }