简单的代码不起作用

时间:2015-02-12 18:03:05

标签: c# unity3d

我试图移动我的角色,但他穿过场景的边界。 当我调试它时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.
}

1 个答案:

答案 0 :(得分:1)

我无法确切地说出你的问题是什么,并希望你的问题更加准确,但我认为你的工作就像一个带固定相机的博德游戏,类似球的东西一直在移动,你只想保留那个对象现场。

在您的代码中,您通过变量定义了一个位置,并对每个帧进行了位置检查。这不是基本上统一完成的事情,而是会有问题。你可以制作一个空物体并放入你想要的边界,并用你的移动物体检查那个物体的位置。

你的下一个方法是制作一个物体并为其添加一个对撞机组件。如果你的游戏是3D添加一个对撞机,如果它的2D游戏添加一个2d对撞机和一个对撞机移动对象,之后它永远不会移动到边界但仍然会有一些限制,所以如果它没有工作我认为你应该添加一个对他们两人都是僵硬的。