Unity-如何判断转换函数是否会将对象带出特定范围?

时间:2019-03-18 01:44:52

标签: c# unity3d game-physics

好吧,我使用操纵杆像这样在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));

我如何检测平移是否会将摄像机移出范围,如果属实,则不使用移动矢量进行平移吗?

1 个答案:

答案 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)