【问题标题】:cant adjust player movement to within boundary无法将玩家移动调整到边界内
【发布时间】:2022-08-16 01:51:05
【问题描述】:

嗨,我正在尝试设置一个边界,如果我的玩家向后走过某个点,它的位置会重新调整到边界内。这是我在 GameManager.cs 中的代码:

Vector3 pos = player.GetComponent<Rigidbody>().position;

Update() {
    if (pos.z <= -20)
    {
        print(\"XCzxczczxczxcxzc\");
        float newX = pos.x;
        float newY = pos.y;
        pos = new Vector3(newX, newY, 0);
    }

}

从这段代码中,显然我有一个刚体连接到我的播放器,它是一个胶囊原语。然而,由于某种原因,它只是不断地越过指定的边界。非常感谢帮助。

    标签: unity3d


    【解决方案1】:

    问题是您的 pos 变量不是刚体的实际位置,它只是其分配时值的副本。

    与其为位置创建变量,不如为刚体创建一个变量,并在进行更改时使用该引用(连同.position)。

    Rigidbody body = player.GetComponent<RigidBody>();
    
    void Update() {
        Vector3 pos = body.position; 
    
        if (pos.z <= -20) {
            float newX = pos.x;
            float newY = pos.y;
            body.position = new Vector3(newX, newY, 0); 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多