1

这是我在统一 3d 中的代码

moveDirection = Vector3.forward + new Vector3(Input.acceleration.x * 0.3f, 0, 0);   

// transform.position.x = Mathf.Clamp(transform.position.x, -2.0f, 2.0f);

transform.Translate(moveDirection * Time.deltaTime *9); 

向前移动的物体。我想夹住它的 x 位置。

transform.position.x = Mathf.Clamp(transform.position.x, -2.0f, 2.0f);

这给了我

错误 CS1612:无法修改“UnityEngine.Transform.position”的值类型返回值。考虑将值存储在临时变量中

我怎样才能夹住我的物体?

4

2 回答 2

3

Unity 在这方面非常愚蠢,因此需要一些解决方法。尝试这个:

Vector3 tmpPos = transform.position;
tmpPos.x = Mathf.Clamp(tmpPos.x, -2.0f, 2.0f);
transform.position = tmpPos;
于 2013-04-16T07:36:12.023 回答
0

您不能直接访问 x 值,这是一种解决方法:

transform.position = new Vector3(Mathf.Clamp(transform.position.x, -2.0f, 2.0f), transform.position.y, transform.position.z)
于 2020-05-24T22:47:03.350 回答