コード例 #1
0
        private void SetHandMovement(Animator animator, HandDirectionEnum direction, HandMovementEnum movement, Vector3 smoothPosDir, Vector3 smoothNegDir, float movementLoop, ref float transparency)
        {
            switch (movement)
            {
            case HandMovementEnum.Static:
            default:
                float staticLoopMulitiplier = StaticCurve.Evaluate(movementLoop);
                animator.SetFloat(ForwardParam, smoothPosDir.z * staticLoopMulitiplier * MovementScale);
                animator.SetFloat(BackParam, smoothNegDir.z * staticLoopMulitiplier * MovementScale);
                animator.SetFloat(LeftParam, smoothPosDir.x * staticLoopMulitiplier * MovementScale);
                animator.SetFloat(RightParam, smoothNegDir.x * staticLoopMulitiplier * MovementScale);
                animator.SetFloat(UpParam, smoothPosDir.y * staticLoopMulitiplier * MovementScale);
                animator.SetFloat(DownParam, smoothNegDir.y * staticLoopMulitiplier * MovementScale);
                break;

            case HandMovementEnum.PingPong:
                float pingPongMultiplier = PingPongCurve.Evaluate(movementLoop);
                animator.SetFloat(ForwardParam, smoothPosDir.z * pingPongMultiplier * MovementScale);
                animator.SetFloat(BackParam, smoothNegDir.z * pingPongMultiplier * MovementScale);
                animator.SetFloat(LeftParam, smoothPosDir.x * pingPongMultiplier * MovementScale);
                animator.SetFloat(RightParam, smoothNegDir.x * pingPongMultiplier * MovementScale);
                animator.SetFloat(UpParam, smoothPosDir.y * pingPongMultiplier * MovementScale);
                animator.SetFloat(DownParam, smoothNegDir.y * pingPongMultiplier * MovementScale);
                break;

            case HandMovementEnum.Directional:
                float directionalMultiplier = DirectionalCurve.Evaluate(movementLoop);
                animator.SetFloat(ForwardParam, smoothPosDir.z * directionalMultiplier * MovementScale);
                animator.SetFloat(BackParam, smoothNegDir.z * directionalMultiplier * MovementScale);
                animator.SetFloat(LeftParam, smoothPosDir.x * directionalMultiplier * MovementScale);
                animator.SetFloat(RightParam, smoothNegDir.x * directionalMultiplier * MovementScale);
                animator.SetFloat(UpParam, smoothPosDir.y * directionalMultiplier * MovementScale);
                animator.SetFloat(DownParam, smoothNegDir.y * directionalMultiplier * MovementScale);
                if (direction != HandDirectionEnum.None)
                {
                    transparency *= DirectionalTransparencyCurve.Evaluate(movementLoop);
                }
                break;

                /*case HandMovementEnum.Random:
                 *  break;*/
            }
        }
コード例 #2
0
        private void SetHandDirection(HandDirectionEnum direction, ref Vector3 smoothPosDir, ref Vector3 smoothNegDir, float dirChangeTime, bool visible)
        {
            // Breaking these up into 2 vectors to make later modifications easier
            // TODO make this a little less bloated
            Vector3 posDir = Vector3.zero;
            Vector3 negDir = Vector3.zero;

            if (visible)
            {
                if ((direction & HandDirectionEnum.Front) == HandDirectionEnum.Front)
                {
                    posDir.z = 1;
                }
                if ((direction & HandDirectionEnum.Back) == HandDirectionEnum.Back)
                {
                    negDir.z = 1;
                }
                if ((direction & HandDirectionEnum.Left) == HandDirectionEnum.Left)
                {
                    posDir.x = 1;
                }
                if ((direction & HandDirectionEnum.Right) == HandDirectionEnum.Right)
                {
                    negDir.x = 1;
                }
                if ((direction & HandDirectionEnum.Up) == HandDirectionEnum.Up)
                {
                    posDir.y = 1;
                }
                if ((direction & HandDirectionEnum.Down) == HandDirectionEnum.Down)
                {
                    negDir.y = 1;
                }
            }

            smoothPosDir = Vector3.Slerp(smoothPosDir, posDir, (Time.time - dirChangeTime) * DirAnimSpeed);
            smoothNegDir = Vector3.Slerp(smoothNegDir, negDir, (Time.time - dirChangeTime) * DirAnimSpeed);
        }