我试图移动我的角色,但他穿过场景的边界。
当我调试它时charTransform has 0 0 0 coords in Vector3
。
Transform charTransform;
float leftHorizontalBound;
float rightHorizontalBound;
void Start()
{
charTransform = this.transform;
leftHorizontalBound = camera.ViewportToWorldPoint (new Vector3 (0,0, camera.nearClipPlane)).x;
rightHorizontalBound= camera.ViewportToWorldPoint (new Vector3 (1,0, camera.nearClipPlane)).x;
}
void Update()
{
if(charTransform.position.x <= leftHorizontalBound)
{
charTransform.position = new vector2(leftHorizontalBound + 0.1f);
return;
}
if(charTransform.position.x >= rightHorizontalBound)
{
charTransform.position = new vector2(rightHorizontalBound - 0.1f);
return;
}
//MAKE HERE YOUR MOVEMENT BASED ON INPUT.
}
答案 0 :(得分:1)
我无法确切地说出你的问题是什么,并希望你的问题更加准确,但我认为你的工作就像一个带固定相机的博德游戏,类似球的东西一直在移动,你只想保留那个对象现场。
在您的代码中,您通过变量定义了一个位置,并对每个帧进行了位置检查。这不是基本上统一完成的事情,而是会有问题。你可以制作一个空物体并放入你想要的边界,并用你的移动物体检查那个物体的位置。
你的下一个方法是制作一个物体并为其添加一个对撞机组件。如果你的游戏是3D添加一个对撞机,如果它的2D游戏添加一个2d对撞机和一个对撞机移动对象,之后它永远不会移动到边界但仍然会有一些限制,所以如果它没有工作我认为你应该添加一个对他们两人都是僵硬的。