Unity鼠標拖拽控制人物的左右旋轉


在人物上新建腳本GamePlayer.cs

using UnityEngine;
using System.Collections;

public class GamePlayer : MonoBehaviour
{
     //是否被拖拽
     private bool onDrag = false;
     //旋轉速度
     public float speed = 6f;
     //阻尼速度
     private float zSpeed;
     //鼠標沿水平方向拖拽的增量
     private float X;
     //鼠標沿豎直方向拖拽的增量     
     //private float Y;
     //鼠標移動的距離
     private float mXY;

    //接受鼠標按下的事件
    void OnMouseDown()
    {           
        X = 0f;
        //Y = 0f;   
    }

    //鼠標拖拽時的操作
    void OnMouseDrag()     
    {
        Debug.Log("鼠標拖拽");
        onDrag true;
        X = -Input.GetAxis("Mouse X"); 
        //獲得鼠標增量 
        //Y = Input.GetAxis ("Mouse Y"); 
        //mXY = Mathf.Sqrt (X * X + Y * Y);
        //計算鼠標移動的長度
        // if(mXY == 0f){ mXY=1f;         }     }  

        //計算鼠標移動的長度//
        mXY = Mathf.Sqrt (X * X); 
        if(mXY == 0f)
        { 
            mXY=1f;       
        }   
    }

        //獲取阻尼速度 
        float RiSpeed ()     
        { 
            if (onDrag)
            { 
                zSpeed = speed;    
            } 
            else//if (zSpeed> 0) 
                ////通過除以鼠標移動長度實現拖拽越長速度減緩越慢 
                   //  zSpeed -= speed*2 * Time.deltaTime / mXY; 
                ////else 
                //
                    zSpeed = 0;
                //}        
return zSpeed;     
    }

    void LateUpdate()
    {
        transform.Rotate(new Vector3(0, X, 0) * RiSpeed(), Space.World);
        if (!Input.GetMouseButtonDown(0))
        {
            onDrag = false;
        }
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM