子弹

314次阅读
没有评论

共计 1882 个字符,预计需要花费 5 分钟才能阅读完成。

子弹行为

子弹行为只是以某个角度向前移动一个对象。然而,它提供了额外的选项,如重力和弹跳,使其也可以像弹跳球一样使用。正如名称所暗示的那样,它非常适合于像子弹这样的抛射物,但对于自动控制其他类型的物体也很有用,例如连续向前移动的敌人。

在示例浏览器中,关于子弹行为的两个例子是“弹跳球”和“弹跳子弹”。

脚本编程

当使用 JavaScript 或 TypeScript 编码时,可以通过 IBulletBehaviorInstance 脚本接口访问此行为的功能。

步进子弹

通常,子弹行为在每个 tick 中移动固定的距离。然而,如果它移动得非常快,它在一帧内移动的距离可能足以完全跳过障碍物。为了避免这个问题,你可以启用 Step 属性。这将使对象以小增量移动,每次触发 On step。在 On step 中,你可以添加一个 Is overlapping 条件来检查子弹是否与障碍物重叠,提高精度。

在 On step 事件中,Stop stepping 操作将阻止子弹进一步前进。这将使子弹停在与物体碰撞的第一个位置,这是创建爆炸效果的好地方。你也可以销毁对象,这也会自动停止步进。

有关步进如何工作的示例,请参阅示例浏览器中的“子弹步进”示例。

虽然相同的技术也可用于制作即时命中的子弹,但这通常最好使用 Line of Sight 行为的射线投射功能来完成,如“即时命中激光”示例所示。

子弹属性

  • 速度:子弹的初始速度,以像素 / 秒为单位。
  • 加速度:子弹的加速度,以像素 / 秒²为单位。零将保持恒定速度,正值加速,负值减速直到停止(物体不会进入反向)。
  • 重力:引起向下加速度的重力,以像素 / 秒²为单位。零禁用重力,适用于俯视游戏。正值导致子弹被重力拉下的抛物线路径。
  • 从固体上弹回:如果启用,子弹将从具有 Solid 行为的任何物体上弹回。它还将根据物体的形状和角度计算反射角,以便现实地反弹。
  • 设置角度:如果禁用,行为永远不会改变对象的角度。如果启用,行为总是将对象角度设置为运动角度,并且如果对象角度发生变化,运动角度将相应更新。
  • Step:启用步进模式,以小增量移动对象,触发 On step 以提高碰撞的准确性。参见上面的步进子弹。
  • Enabled:行为最初是启用还是禁用。如果禁用,可以在运行时使用 Set enabled 操作启用它。

子弹条件

  • 比较速度:比较子弹的当前速度,以像素 / 秒为单位。
  • 比较行驶距离:比较自创建以来子弹移动的总距离,以像素为单位。这不考虑到使用其他操作(如 Set position)更改对象位置的情况。
  • Is enabled:测试行为当前是否启用。当禁用时,它对对象没有任何影响。
  • On step:当启用 Step 时,随着对象的小增量移动而触发。添加 Is overlapping 条件以改进碰撞测试的准确性。有关更多信息,请参见上面的步进模式。

子弹动作

  • 从物体上弹回:让子弹从刚刚接触的物体上弹回。由于这需要子弹刚刚接触到物体,因此通常只在 On collision 事件中有用。它还会根据物体的形状和角度计算反射角,以便现实地反弹。如果子弹当前没有与给定的物体重叠,或者深陷其中,这个动作将没有任何效果。
  • 设置加速度:设置子弹的加速度,以像素 / 秒²为单位。
  • 设置从固体上弹回:启用或禁用 Bounce off solids 属性。
  • 设置运动角度:设置子弹当前的运动角度,以度为单位。注意:当速度为 0 时,运动角度始终为 0,无法更改,因为没有运动。因此,首先设置速度,然后设置运动角度。
  • 设置行驶距离:简单地更改 DistanceTravelled 表达式返回的计数器。计数器仍会根据对象移动而增加。
  • Set enabled:启用或禁用移动。如果禁用,行为将停止移动子弹,但如果再次启用,将记住当前的速度、加速度等。
  • 设置重力:设置由重力引起的加速度,以像素 / 秒²为单位。
  • 设置速度:设置子弹的当前移动速度,以像素 / 秒为单位。
  • 停止步进:当启用 Step 时,防止对象进一步前进。这通常是在检测到碰撞时使用 Is overlapping 完成的。注意,销毁对象也会自动停止步进。有关更多信息,请参见上面的步进子弹。

子弹表达式

  • Acceleration:获取子弹的当前加速度,以像素 / 秒²为单位。
  • AngleOfMotion:获取子弹当前移动的角度(可能与对象的角度不同),以度为单位。注意,当对象停止(速度为 0)时,运动角度始终为 0。
  • DistanceTravelled:返回自创建以来子弹移动的总距离,以像素为单位。这不考虑到使用其他操作(如 Set position)更改对象位置的情况。
  • Gravity:返回当前设置的重力属性,以像素 / 秒²为单位。
  • Speed:获取子弹的当前移动速度,以像素 / 秒为单位。
正文完
 0
评论(没有评论)