我正在尝试练习在Unity 3D中制作第三方控制器。我是一个初学者,我完全困惑于如何使控制器正常工作。我已经进行了数小时的研究,但似乎找不到任何线索可以回答我的问题。我有两个脚本,一个CameraController和一个CharacterController。我的代码如下。

CameraController:

using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour {
public GameObject target;
public float rotationSpeed;
Vector3 offset;
Vector3 CameraDestination;


// Use this for initialization
void Start () {
    offset = transform.position - target.transform.position;
    CameraDestination = offset + transform.position;
    rotationSpeed = 50f;
    transform.position = CameraDestination;
}

// Update is called once per frame
void Update () {

    transform.LookAt (target.transform.position);
    float h = Input.GetAxisRaw ("Horizontal");
    transform.RotateAround (target.transform.position, Vector3.up, Time.deltaTime * h * rotationSpeed);

    target.transform.Rotate (0f, Time.deltaTime * h * rotationSpeed, 0f);

}
}


CharacterController:

using UnityEngine;
using System.Collections;

public class CharController : MonoBehaviour {

public float playerSpeed = 10f;


// Use this for initialization
void Start () {



}

// Update is called once per frame
void Update () {
    float Vertical = Input.GetAxis("Vertical");
    transform.position += transform.forward * Time.deltaTime * playerSpeed * Vertical;



}
}


按下左右箭头键时,播放器和相机都会旋转。如果我小时候尝试将相机安装到播放器上,则相机的旋转变得混乱,但是如果我不将相机安装在播放器上,则相机会停止跟随播放器。如果我尝试将相机设置为相对于播放器的特定位置,它会像预期的那样停止围绕播放器旋转。我根本想不出一种可行的方法。谢谢您提前回答我的问题!

最佳答案

当我解决这个问题时,我喜欢有一个空的gameObject,其中有2个孩子,分别是摄像机和角色的网格。

> CharacterController
    > Camera
    > CharacterRig


当您想要旋转角色时,请旋转CharacterController,然后在您围绕角色旋转Camera时,将代码更改为:

transform.RotateAround (CharacterRig.transform.position, Vector3.up, Time.deltaTime * h * rotationSpeed);


这样一来,无论角色动画如何,相机都可以旋转,并且可以解决您的问题。如果您想稍后实现动画,这是非常重要的,因为您不希望将摄像机与正在动画的对象关联起来,因为它会随动画一起移动。

P.s.您的代码看起来不错。当然,这纯粹是您设置游戏对象的方式。

09-03 23:21