好吧我使用操纵杆在Unity中移动我的相机,如下所示:
moveVector = (transform.right * joystick.Horizontal + transform.forward * joystick.Vertical);
transform.Translate(moveVector * speed * Time.deltaTime, Space.World);
但是我需要限制我的相机在boxcollider(房间,存储在变量中)的范围内移动到的位置。我尝试了这个,但即使相机移出范围,这总是会返回true:
print(GameObject.FindObjectOfType<PlayerController>().room.bounds.Contains(moveVector));
如何检测翻译是否会将摄像机移出界限,如果这是真的,则不使用移动矢量进行平移?
问题是您正在使用摄像机的位移('moveVector')来确定摄像机是否在边界框中。相反,你应该使用相机的位置,
gameObject.transform.Position
或相机的未来位置,
gameObject.transform.position + moveVector
确定它是否在边界框中。因此,修改您的代码如下:
GameObject.FindObjectOfType<PlayerController>().room.bounds.Contains(camera.transform.position + moveVector)
确保你的'room'变量是'PlayerController'脚本中的Collider类型,
var room = GetComponent<Collider>();