纳金网

标题: stealth代码问题求助 [打印本页]

作者: liu894321    时间: 2017-5-17 11:45
标题: stealth代码问题求助
这是stealth的代码,看红色字部分
using UnityEngine;
using System.Collections;

public class DonePlayerMovement : MonoBehaviour
{
        public AudioClip shoutingClip;                // Audio clip of the player shouting.
        public float turnSmoothing = 15f;        // A smoothing value for turning the player.
        public float speedDampTime = 0.1f;        // The damping for the speed parameter
       
       
        private Animator anim;                                // Reference to the animator component.
        private DoneHashIDs hash;                        // Reference to the HashIDs.

       
       
        void Awake ()
        {
                // Setting up the references.
                anim = GetComponent<Animator>();
                hash = GameObject.FindGameObjectWithTag(DoneTags.gameController).GetComponent<DoneHashIDs>();
               
                // Set the weight of the shouting layer to 1.
                anim.SetLayerWeight(1, 1f);
        }
       
       
        void FixedUpdate ()
        {
                // Cache the inputs.
                float h = Input.GetAxis("Horizontal");
                float v = Input.GetAxis("Vertical");
                bool sneak = Input.GetButton("Sneak");
               
                MovementManagement(h, v, sneak);
        }
       
       
        void Update ()
        {
                // Cache the attention attracting input.
                bool shout = Input.GetButtonDown("Attract");
               
                // Set the animator shouting parameter.
                anim.SetBool(hash.shoutingBool, shout);
               
                AudioManagement(shout);
        }
       
        这里的运动代码,是不是只有旋转没有移动,运行后角色只有旋转
        void MovementManagement (float horizontal, float vertical, bool sneaking)
        {
                // Set the sneaking parameter to the sneak input.
                anim.SetBool(hash.sneakingBool, sneaking);
               
                // If there is some axis input...
                if(horizontal != 0f || vertical != 0f)
                {
                        // ... set the players rotation and set the speed parameter to 5.5f.
                        Rotating(horizontal, vertical);
                        anim.SetFloat(hash.speedFloat, 5.5f, speedDampTime, Time.deltaTime);
                }
                else
                        // Otherwise set the speed parameter to 0.
                        anim.SetFloat(hash.speedFloat, 0);
        }
        高手指点一下
       
        void Rotating (float horizontal, float vertical)
        {
                // Create a new vector of the horizontal and vertical inputs.
                Vector3 targetDirection = new Vector3(horizontal, 0f, vertical);
               
                // Create a rotation based on this new vector assuming that up is the global y axis.
                Quaternion targetRotation = Quaternion.LookRotation(targetDirection, Vector3.up);
               
                // Create a rotation that is an increment closer to the target rotation from the player's rotation.
                Quaternion newRotation = Quaternion.Lerp(GetComponent<Rigidbody>().rotation, targetRotation, turnSmoothing * Time.deltaTime);
               
                // Change the players rotation to this new rotation.
                GetComponent<Rigidbody>().MoveRotation(newRotation);
        }
       
       
        void AudioManagement (bool shout)
        {
                // If the player is currently in the run state...
                if(anim.GetCurrentAnimatorStateInfo(0).nameHash == hash.locomotionState)
                {
                        // ... and if the footsteps are not playing...
                        if(!GetComponent<AudioSource>().isPlaying)
                                // ... play them.
                                GetComponent<AudioSource>().Play();
                }
                else
                        // Otherwise stop the footsteps.
                        GetComponent<AudioSource>().Stop();
               
                // If the shout input has been pressed...
                if(shout)
                        // ... play the shouting clip where we are.
                        AudioSource.PlayClipAtPoint(shoutingClip, transform.position);
        }
}







欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5