繁体   English   中英

Unity3D 在 c# 重生相机的问题

[英]Problem with respawned camera in Unity3D in c#

我在 Unity 中遇到相机问题。 我想跟上球。 我想让球和相机自动重生。 但是代码有效,但相机没有跟随球。 这是自动重生的代码:

public class start : MonoBehaviour
{
public GameObject Camera;
public GameObject Ball;
void Start()
{
    GameObject ball = GameObject.Instantiate(Ball);
    Ball.name = "Ball";
    ball.transform.position = transform.position + Vector3.up * 0.5f;
    Instantiate(Camera);
    Camera.name = "Camera";
    Camera.transform.position = transform.position + new Vector3(0.25f, 1.75f, 6.5f);
}

摄像头controller的代码:

public Transform Ball;
void Update()
{
    Rigidbody rigidbody = Ball.GetComponent<Rigidbody>();
    float ballVelocity = rigidbody.velocity.sqrMagnitude;

    UnityEngine.Vector3 vector = new UnityEngine.Vector3(0, 4, 7);
    vector *= (1+ ballVelocity / 30);
    UnityEngine.Vector3 nowaPozycjaKamery = Ball.position + vector;
    transform.position = UnityEngine.Vector3.Lerp(transform.position, nowaPozycjaKamery, Time.deltaTime*5);
    transform.LookAt(Ball);
}

相机在自动重生前运行良好。 启动相机时的代码工作遵循良好的 position,但当球改变 position 时被冻结。

我希望你提供更多关于这个问题的信息。 就像是否有任何 NullReferenceException 或其他异常。 但无论如何我都会尽力回答你的问题。 我认为问题在于相机脚本没有对正在生成的新球的引用(这是在销毁旧球并使用Destroy(gameObject)实例化新球的情况下)。

我的建议是在相机脚本中添加一个方法,负责将新球注入脚本。 然后在负责生成的脚本中使用新生成的球调用此方法。 或者更直接但效率不高的方法是检查球属性是否为 null,然后调用 GameObject.Find ("Name of The ball object")并给出球的名称 object。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM