做fps游戲,控制視角的腳本放在模型上好使,但是上下移動視角整個身子都會移動,所以把腳本放在上半身的關節上,但是放上去并不好用,而且放在模型上就好使,想問下這是個什么原因??代碼如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MouseLook : MonoBehaviour {
// Use this for initialization
public enum RotationAxes
{
MouseXAndY=0,
MouseX=1,
MouseY=2
}
public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityHor = 9.0f;
public float ensitivityVert = 9.0f;
public float minimumVert = -45.0f;
public float maximumVert = 45.0f;
private float _rotationX = 0;
private Vector3 eulerAngels;
void Start () {
if (GameObject.FindWithTag("soldier").GetComponent<Rigidbody>())
{
GameObject.FindWithTag("soldier").GetComponent<Rigidbody>().freezeRotation = true;
}
eulerAngels = transform.localEulerAngles;
}
void Update () {
if (axes==RotationAxes.MouseX)
{
transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityHor, 0);
}
else if (axes==RotationAxes.MouseY)
{
_rotationX -= Input.GetAxis("Mouse Y") * sensitivityHor;
_rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);
float rotationY = transform.localEulerAngles.y;
transform.localEulerAngles = new Vector3 (eulerAngels.x, eulerAngels.y, eulerAngels.z+rotationY);
}
else
{
_rotationX -= Input.GetAxis("Mouse Y") * sensitivityHor;
_rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);
float delta = Input.GetAxis("Mouse X") * sensitivityHor;
float rotationY = transform.localEulerAngles.y + delta;
transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);
}
}
}
圖片是腳本系結的關節
uj5u.com熱心網友回復:
單獨給相機寫個跟隨豬腳的代碼,位置高度lerp平滑移動什么的……uj5u.com熱心網友回復:
自己多試試吧,那個好誰知道轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/61369.html
標籤:Unity3D
