好吧,我使用操纵杆像这样在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));
我如何检测平移是否会将摄像机移出范围,如果属实,则不使用移动矢量进行平移吗?
答案 0 :(得分:0)
问题是您正在使用摄像机的位移(“ moveVector”)来确定摄像机是否在边界框中。相反,您应该使用相机的位置,
_width.Constraint.Constant = 100;
View.LayoutIfNeeded (); // The view could be custom view or view controller's view.
或相机的未来位置
gameObject.transform.Position
确定它是否在边界框中。因此,如下修改您的代码:
gameObject.transform.position + moveVector
确保“ PlayerController”脚本中“房间”变量的类型为对撞机,
GameObject.FindObjectOfType<PlayerController>().room.bounds.Contains(camera.transform.position + moveVector)