C# 简单的代码不起作用

C# 简单的代码不起作用,c#,unity3d,C#,Unity3d,我试图移动我的角色,但他穿过了场景的边界。 当我调试它时说SchartTransform在Vector3中有0个坐标 我不能确切地说你的问题是什么,我希望你能更准确地假设你的问题,但我认为你在做一些事情,比如一个固定摄像头的划船游戏,还有一些事情,比如一个球总是在移动,你只想让这个物体留在场景中 在代码中,您通过变量定义了一个位置,并对每个帧进行了位置检查。这不是在统一中基本上要做的事情,会有问题。您可以创建一个空对象,并将其放在所需的边框上,然后用移动对象检查该对象的位置 下一种方法是创建一个

我试图移动我的角色,但他穿过了场景的边界。 当我调试它时说SchartTransform在Vector3中有0个坐标


我不能确切地说你的问题是什么,我希望你能更准确地假设你的问题,但我认为你在做一些事情,比如一个固定摄像头的划船游戏,还有一些事情,比如一个球总是在移动,你只想让这个物体留在场景中

在代码中,您通过变量定义了一个位置,并对每个帧进行了位置检查。这不是在统一中基本上要做的事情,会有问题。您可以创建一个空对象,并将其放在所需的边框上,然后用移动对象检查该对象的位置


下一种方法是创建一个对象并向其添加碰撞器组件。如果你的游戏是3d的,那么就添加一个对撞机,如果它的2d游戏添加一个2d对撞机和一个对撞机到移动的物体上,然后它就再也不会向边界移动了,但仍然会有一些限制,所以如果它不起作用,我想你应该给它们都添加一个刚体。

你到底有什么问题?@aliboy38为什么代码不阻止我的charecter交叉屏幕的边框,为什么charecter总是有坐标x、y、z 0?是否在编辑器中设置leftHorizontalBound和rightHorizontalBound值?
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.
}