【问题标题】:Unity3D C#. Using the transform.RotateAround() function while keep the distance between two objects constantUnity3D C#。使用 transform.RotateAround() 函数,同时保持两个对象之间的距离不变
【发布时间】:2016-07-10 03:09:43
【问题描述】:

我正在尝试在 Unity 3D 中练习制作第三人称控制器。我是一个初学者,我完全不知道如何使我的控制器正常工作。我一直在做数小时的研究,但我找不到任何线索来回答我的问题。我有两个脚本,一个 CameraController 和一个 CharacterController。我的代码如下。

相机控制器:

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);

}
}

角色控制器:

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;



}
}

当按下左或右箭头键时,播放器和相机都会旋转。如果我尝试将相机作为孩子附加到玩家身上,相机的旋转就会变得混乱,但如果我不将相机附加到玩家身上,相机就会停止跟随玩家。如果我尝试将相机设置到相对于玩家的特定位置,它会停止像预期那样围绕玩家旋转。我根本想不出一个可行的方法。感谢您提前回答我的问题!

【问题讨论】:

    标签: c# unity3d user-controls controls unity5


    【解决方案1】:

    当我这样做时,我喜欢有一个空的游戏对象,它有 2 个孩子、相机和角色的网格。

    > CharacterController
        > Camera
        > CharacterRig
    

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

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

    这将允许您的相机旋转而不受任何角色动画的影响,并且应该可以解决您的问题。如果您想稍后实现动画,这一点非常重要,因为您不想将相机作为动画对象的父对象,因为它会随动画一起移动。

    附:您的代码看起来不错。确定这纯粹是您设置游戏对象的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      相关资源
      最近更新 更多