如何使机器人角色保持在飞机边界内?

时间:2018-07-27 00:05:25

标签: unity3d

我是Unity的新手,我正在尝试执行以下操作:

我有一个机器人角色,可以在田野(具有草纹理的平面)上运行 发生了什么事,就是机器人向前奔跑并永远前进

我尝试使用“碰撞器”和“盒子”网格,但不确定将colliderEnter,Stay和Exit的C#代码放在何处。

网格和脚本是在飞机上还是在机器人上?

有人可以快速解决吗?

谢谢

2 个答案:

答案 0 :(得分:2)

也只是入门,但是前几天我是按照教程学习的。

添加一个多维数据集,改变其比例,使其包含您的字段,并可能包含其中的一些内容。为此,请关闭mesh renderer,使其不再可见。创建脚本-HitBoundary.cs-并将其作为组件添加到调整大小的未渲染多维数据集中。

在该文件中,添加OnTriggerExit的处理程序

void OnTriggerExit(Collider other)    {
        // Destroy everything that leaves the trigger
        Destroy(other.gameObject);
}

尽管您可能不想破坏它。

我为什么打OnTriggerExit?随着领域/地图/水平/等。包含在立方体内,从退出的那一刻起,发生的任何事情都在碰撞。因此,我们跟踪它何时退出碰撞状态,并对其进行操作,以删除/替换/移动/销毁/离开目标的任何物体。

答案 1 :(得分:1)

听起来您需要做的是:

  1. 在要设置边界的平面周围添加一个盒子碰撞器。
  2. 向机器人添加对撞机(我会建议使用盒子或药丸,但实验中可以是任何东西!)
  3. 由于机器人是唯一的移动机器人,我认为碰撞代码属于机器人控制器(请参阅如何编写碰撞代码here

它看起来像:

void OnCollisionEnter(Collision collision)
    {
        Collider robot = collision.collider;
        Debug.Log("Just hit the wall!")
    }

如果您只想让机器人在碰到墙壁时停下来,您甚至不需要onCollisionEnter()方法-物理引擎将为您完成所有工作!