C# 对象稍微移动超过它应该停止的点(Unity 2D)
我试图让Unity2D中的一个对象停在一个特定的点上。对象将停止,但位置仍将大于/小于程序所需的位置。我需要该对象在巡逻点停止,如果该对象已通过巡逻点,则布尔值为false。我的代码如下:C# 对象稍微移动超过它应该停止的点(Unity 2D),c#,unity3d,boolean,operators,C#,Unity3d,Boolean,Operators,我试图让Unity2D中的一个对象停在一个特定的点上。对象将停止,但位置仍将大于/小于程序所需的位置。我需要该对象在巡逻点停止,如果该对象已通过巡逻点,则布尔值为false。我的代码如下: private void FixedUpdate() { enemyLocation = GetComponent<Transform>(); Debug.Log("Enemy Location: " + enemyLocation.position.x + "Patrol L
private void FixedUpdate()
{
enemyLocation = GetComponent<Transform>();
Debug.Log("Enemy Location: " + enemyLocation.position.x + "Patrol Location: " + patrolList[1].position.x);
if (enemyLocation.position.x >= patrolList[0].position.x && enemyLocation.position.x <= patrolList[1].position.x)
{
inPatrolRange = true;
}
else
{
inPatrolRange = false;
}
// Used for randomness
gameTime = Time.time;
if (inPatrolRange)
{
Patrol();
}
}
private void FixedUpdate()
{
enemyLocation=GetComponent();
Debug.Log(“敌方位置:+enemyLocation.position.x+”巡逻位置:+patrolList[1]。position.x”);
如果(enemyLocation.position.x>=patrolList[0].position.x&&enemyLocation.position.x为了使变换enemyLocation
保持在巡逻范围内,您可以使用:
如果你不需要在物理上做一些事情,使用<代码>更新>代码>代替<代码> FixEddate 。你也应该考虑从更新循环中移出<代码> GETFECTOR> <代码>。< /P>当我实现这个代码时,我的对象会移动。他夹紧?还有,我用刚体速度来移动物体。
float min = patrolList[0].position.x;
float max = patrolList[1].position.x;
float x = Mathf.Clamp(enemyLocation.position.x, min, max);
enemyLocation.position = new Vector3(x, enemyLocation.position.y);