示例#1
0
        public override void MoveHero(Vector3 moveV)
        {
            if (!photonView.IsMine || IsCannotMoveState() || IsDie)
            {
                Debug.Log("무브히어로가 묵살되었음." + moveV + "포톤이 내것인지? = " + photonView.IsMine);
                return;
            }

            base.MoveHero(moveV);


            E_MoveDir dir = GetMostMoveDir(moveV);

            if (lastDir.Equals(dir))
            {
                return;
            }
            lastDir = dir;
            anim.SetBool("forward", false);
            anim.SetBool("backward", false);
            anim.SetBool("left", false);
            anim.SetBool("right", false);
            anim.SetBool("idle", false);

            switch (dir)
            {
            case E_MoveDir.Forward:
                anim.SetBool("forward", true);
                break;

            case E_MoveDir.Backward:
                anim.SetBool("backward", true);
                break;

            case E_MoveDir.Left:
                anim.SetBool("left", true);
                break;

            case E_MoveDir.Right:
                anim.SetBool("right", true);
                break;

            case E_MoveDir.NONE:
                anim.SetBool("idle", true);
                break;
            }
        }
示例#2
0
        protected E_MoveDir GetMostMoveDir(Vector3 moveDir)
        {
            E_MoveDir dir = E_MoveDir.NONE;

            if (moveDir.sqrMagnitude < Mathf.Epsilon)
            {
                return(dir);
            }

            float x = moveDir.x;
            float z = moveDir.z;

            if (Mathf.Abs(x) > Mathf.Abs(z))
            {
                if (x > Mathf.Epsilon)
                {
                    dir = E_MoveDir.Right;
                }
                else
                {
                    dir = E_MoveDir.Left;
                }
            }
            else
            {
                if (z > Mathf.Epsilon)
                {
                    dir = E_MoveDir.Forward;
                }
                else
                {
                    dir = E_MoveDir.Backward;
                }
            }
            return(dir);
        }
示例#3
0
        protected E_MoveDir GetMostMoveDir(Vector3 moveDir)
        {
            E_MoveDir dir = E_MoveDir.NONE;

            if (moveDir.sqrMagnitude < Mathf.Epsilon)
            {
                return(dir);
            }

            float x = moveDir.x;
            float z = moveDir.z;

            if (Mathf.Abs(x) > Mathf.Abs(z))
            {
                if (x > Mathf.Epsilon)
                {
                    dir = E_MoveDir.Right;
                }
                else
                {
                    dir = E_MoveDir.Left;
                }
            }
            else
            {
                if (z > Mathf.Epsilon)
                {
                    dir = E_MoveDir.Forward;
                }
                else
                {
                    dir = E_MoveDir.Backward;
                }
            }

            /*
             * float maxDir=0f;
             * float dot = Vector3.Dot(moveDir, Vector3.forward);
             * if (dot > maxDir)
             * {
             *  dir = E_MoveDir.Forward;
             *  maxDir = dot;
             * }
             * dot = Vector3.Dot(moveDir, Vector3.back);
             * if (dot > maxDir)
             * {
             *  dir = E_MoveDir.Backward;
             *  maxDir = dot;
             * }
             * dot = Vector3.Dot(moveDir, Vector3.left);
             * if (dot > maxDir)
             * {
             *  dir = E_MoveDir.Left;
             *  maxDir = dot;
             * }
             * dot = Vector3.Dot(moveDir, Vector3.right);
             * if (dot > maxDir)
             * {
             *  dir = E_MoveDir.Right;
             *  maxDir = dot;
             * }
             */
            return(dir);
        }