限制 Unity 中的加速器移动区域
Limiting the Accelerator movement area in Unity
void Update(){
float accel = Input.acceleration.x;
transform.Translate(accel, 0, 0);
}
以上是我当前在游戏中控制加速器的代码。我希望能够左右倾斜 phone 并且角色会左右移动。代码工作正常,但角色移到了屏幕之外。我尝试了 Mathf.Clamp 的加速度值,也尝试了夹紧 transform.position 但都不起作用,似乎只是改变了加速度计控制的速度。
我需要一种方法来动态限制任何屏幕尺寸内的角色移动。
如果我对问题的理解正确,您希望将对象夹在可见区域内。为此,您可以使用视口。
Vector3 pos = this.transform.position;
Vector3 viewportPos = Camera.main.WorldToViewportPoint(pos);
if (viewportPos.x < 0f) Camera.main.ViewportToWorldPoint(new Vector3(0f, pos.y, pos.z));
else if (viewportPos.x > 1f) Camera.main.ViewportToWorldPoint(new Vector3(1f, pos.y, pos.z));
也许你可以将碰撞器设置为轨道旁边的触发器,并在对象接触触发器时将加速变量设置为 0
void Update(){
float accel = Input.acceleration.x;
transform.Translate(accel, 0, 0);
}
以上是我当前在游戏中控制加速器的代码。我希望能够左右倾斜 phone 并且角色会左右移动。代码工作正常,但角色移到了屏幕之外。我尝试了 Mathf.Clamp 的加速度值,也尝试了夹紧 transform.position 但都不起作用,似乎只是改变了加速度计控制的速度。
我需要一种方法来动态限制任何屏幕尺寸内的角色移动。
如果我对问题的理解正确,您希望将对象夹在可见区域内。为此,您可以使用视口。
Vector3 pos = this.transform.position;
Vector3 viewportPos = Camera.main.WorldToViewportPoint(pos);
if (viewportPos.x < 0f) Camera.main.ViewportToWorldPoint(new Vector3(0f, pos.y, pos.z));
else if (viewportPos.x > 1f) Camera.main.ViewportToWorldPoint(new Vector3(1f, pos.y, pos.z));
也许你可以将碰撞器设置为轨道旁边的触发器,并在对象接触触发器时将加速变量设置为 0