Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我将球作为相机的父游戏对象时,相机会随球旋转。我该怎么办?_C#_Unity3d - Fatal编程技术网

C# 当我将球作为相机的父游戏对象时,相机会随球旋转。我该怎么办?

C# 当我将球作为相机的父游戏对象时,相机会随球旋转。我该怎么办?,c#,unity3d,C#,Unity3d,我用我的相机作为球的儿童游戏对象,所以当我移动球的时候,我的相机会和他一起移动。但问题是我使用的是刚体.addForce(),所以当球旋转时,相机也随之旋转。 那么,我应该怎么做才能不旋转我的相机,而只是用我的球移动它呢 void FixedUpdate() { rigidbody.addForce(Input.getAxis("Horizontal"), 0, Input.getAxis("vertical")); } 有几种方法可以解决这个问题,我将列出一些 首先,如果你不在乎

我用我的相机作为球的儿童游戏对象,所以当我移动球的时候,我的相机会和他一起移动。但问题是我使用的是
刚体.addForce()
,所以当球旋转时,相机也随之旋转。 那么,我应该怎么做才能不旋转我的相机,而只是用我的球移动它呢

void FixedUpdate()
{
    rigidbody.addForce(Input.getAxis("Horizontal"), 0, Input.getAxis("vertical")); 
} 

有几种方法可以解决这个问题,我将列出一些

首先,如果你不在乎球是否旋转,你可以禁用球的旋转。如果打开刚体组件中的“约束”区域,可以冻结旋转,使球不会旋转

或者,您可以编写一个脚本,使相机始终以某种方式定向。取决于您是否希望摄影机在任何平面上围绕球旋转,取决于您执行此操作的方式

第三种选择是最干净的,即不要让相机成为球的子对象。执行此操作的最小组件如下所示:

public class TargetFollow : MonoBehaviour
{
    public Transform Target;
    public float DistanceFromTarget;

    void Update()
    {
        transform.position = Target.position + new Vector3(0, 0, DistanceFromTarget);
        transform.LookAt(Target);
    }
}

只需将球拖动到组件中的“目标”插槽中。请记住,这是超级裸体。您可能需要添加更多变量,以便更好地控制相机与球之间的方向,或者在“开始”方法中可以捕捉相机与球之间的方向和距离的快照。

您如何使用
addForce()
?请发布你的代码我在我的球对象中使用这个脚本,主摄像机是子对象。Void FixedUpdate(){rigidbody.addForce(Input.getAxis(“水平”),0,Input.getAxis(“垂直”);}好吧,不要让你的相机成为球的孩子。最多写一个脚本,让你的相机跟踪一个特定的目标。那么…这个脚本会是???