C# 简单的代码不起作用
我试图移动我的角色,但他穿过了场景的边界。 当我调试它时说SchartTransform在Vector3中有0个坐标C# 简单的代码不起作用,c#,unity3d,C#,Unity3d,我试图移动我的角色,但他穿过了场景的边界。 当我调试它时说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.
}