我正在尝试使用刚体创建 MOB AI。我想让暴徒(GameObject)使用
mobrigid.AddForce((((goal - transform.position).normalized)*speed * Time.deltaTime));
(目标是暴民周围的一个随机地方)。
这就是它变得复杂的地方,一些暴徒以极快的速度在空中飞行,而另一些则以低速正常移动。(是的,我确实确保目标。Y 是在地面上而不是空中)。我尝试通过改变阻力来修复它,但这会导致暴徒在空中行走而不会因重力而下落。
我真的很迷茫,不知道如何简单地用刚体移动游戏对象而不会出现这种奇怪的行为。
怪物日志(目标 Y 更改为 0):
编辑:
暴徒的形象:
我的运动逻辑:
case MOBTYPE.EARTHMOB:
switch (currentstatus)
{
case MOBSTATUS.STANDING:
if (mobrigid.IsSleeping())
{
mobrigid.WakeUp();
}
goal = this.transform.position;
goal.x = Random.Range(goal.x - 150, goal.x + 150);
goal.z = Random.Range(goal.z -150, goal.z + 150);
goal.y = 0;
currentstatus = MOBSTATUS.WALKING;
// Debug.Log("Transform:"+this.transform.position+ "Goal:" + goal+ "goal-transform:" + (goal - transform.position));
break;
case MOBSTATUS.WALKING:
if (Random.Range(1, 100) == 5)
{
currentstatus = MOBSTATUS.STANDING;
}
if (mobrigid.IsSleeping())
{
mobrigid.WakeUp();
}
mobrigid.AddForce((((goal - transform.position).normalized) * 10000 * Time.deltaTime));
// transform.LookAt(goal);
var distance = Vector3.Distance(goal, gameObject.transform.position);
if (distance <=5)
{
currentstatus = MOBSTATUS.STANDING;
}
break;
}
break;
地形图:
叮当猫咪
相关分类