unity3d 如何获得每一帧游戏对象的位置?

k2fxgqgv  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(369)

我基本上是想让一个游戏对象在到达空间中的某个位置后掉头。我有一个预置,创建游戏对象并让它随机移动。然而,打印位置值给了我相同的值(0,4,0),这基本上是产卵器的位置。我想知道对象在空间中移动时的位置。以下是代码:

If (Input.GetMouseButtonDown(0))
{
  direction = new Vector3(Random.Range(-1.0f,1.0f), Random.Range(-1.0f,1.0f),     Random.Range(-1.0f,1.0f)); 
 GameObject sphere = Instantiate(spherePrefab, transform.position, Quaternion.identity);
 sphere.GetComponent<Rigidbody>().velocity = direction * speed; // this moves the object randomly
 position = sphere.transform.position;
 Debug.Log(position); // This prints the spawners location every frame but no the spheres.

我只在场景中创建了一个spawner对象,并使用脚本示例化了球体。
任何帮助感激不尽!

qcuzuvrc

qcuzuvrc1#

您没有更新日志中打印的值。
position变量只保存预置件示例化时的世界位置。
下面是一个基于您的代码的基本脚本,它给出了您所期望的世界位置。
下面,spherePrefab是一个3D游戏对象球体,我只添加了一个带有默认参数的刚体。
用例如下所示:按下鼠标按钮,然后观察Unity控制台。

using UnityEngine;

public class Test : MonoBehaviour
{
    [SerializeField] GameObject spherePrefab;

    const float SPEED = 2f;

    // Initialization
    Vector3 _sphere_position = Vector3.zero;
    bool _display_log = false;
    GameObject _sphere_ref = null;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 direction = new(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f));

            _sphere_ref = Instantiate(spherePrefab, transform.position, Quaternion.identity);
            _sphere_ref.GetComponent<Rigidbody>().velocity = direction * SPEED; // this moves the object randomly
            _sphere_position = _sphere_ref.transform.position;

            Debug.Log(_sphere_position); // This prints the spawners location every frame but no the spheres.

            _display_log = true;
        }

        // This case is expected to be entered after setting sphere_ref in order not to be null
        if (_display_log)
        {
            // Update the value
            _sphere_position = _sphere_ref.transform.position;

            // Print it
            Debug.Log(_sphere_position);
        }
    }
}

相关问题