如何创建附着在玩家身上的武器
在本教程中,我们将创建一个安装在角色身上的武器。我们还将学习如何设置角色,让它能够跳跃并自由移动,同时携带武器。该武器可以发射炮弹,炮弹会在碰撞时爆炸。
此外,我们还可以使用 hyperPad 的一些 UI 控件来控制武器的旋转和威力。由于我们将使用重力和物理对象,因此会将项目的全局视图设置为侧视图。
添加环境
开始之前,先从 hyperPad Shop 获取游戏所需的所有素材。本教程将使用的素材包是“Platform Starter Pack”和“Puzzle Pack”。
首先,我们要添加一个简单的平台、蓝色外星人角色,以及一些可用作射击目标的箱子。请确保将角色和所有箱子设为物理对象,并将墙壁和平台设为墙壁对象。
设置角色
我们将添加一些行为,以便在游戏中控制角色。请参照下方的示意图,添加相应的行为。我们将使用摇杆和跳跃按钮行为来控制角色的移动。
游戏开始时会播放待机动画;移动摇杆时会播放行走动画;按下跳跃按钮时则会播放跳跃动画。请注意,我们会在跳跃按钮行为触发后立即将其关闭。这样可以确保角色一次只能跳跃一次。之后,当角色停止下落时,我们会重新启用该行为,同时再次播放待机动画。
添加指定的行为后,场景中会自动加入两个新的 UI 控件。现在,我们可以使用摇杆和跳跃按钮控制角色移动。
设置武器
在本教程中,武器会永久固定在角色背后。首先,我们要添加一个对象来显示武器。
我们将使用下载的“Puzzle Pack”素材包中的绿色管道对象作为武器。将它添加到场景中,并设置其变换属性。请参考下方的示意图,设置合适的缩放比例和锚点。它的排序值应小于角色的排序值,这样武器才会显示在角色后面。
设置好变换属性后,将武器移到角色背后。建议使用网格线,将它精准地对齐到所需位置。
虽然它看起来像一根管道,但我们会用它来显示发射炮弹的武器。
接下来,添加行为,让武器固定在角色身上。
计时器行为会让循环在每次物理更新时执行。每次物理更新恰好占游戏物理刷新率的 1/60 秒,也就是 0.016667 秒。每次更新时,我们都会获取角色的位置,然后根据其 x 和 y 值移动武器,并将移动时长设为 0。
试试看,你会发现大炮现在已经牢牢地固定在角色身上了。
控制武器旋转
接下来,为武器添加旋转控制。我们将添加另一个摇杆,并为它设置一些功能行为。之前,我们通过添加“Joystick Controlled”行为来加入移动摇杆;这次则要手动添加。
请确保当前位于与第一个摇杆相同的图层,然后按下瓶子图标并选择摇杆选项。
添加摇杆对象后,将它放在移动摇杆稍上方的位置,然后修改颜色,使其符合用途。
接下来,为摇杆添加行为。新建的摇杆会自动添加摇杆模拟行为,我们只需要再为它添加一个“Rotate to Angle”行为。点击该行为的“Change Manually”属性,然后将摇杆模拟行为的角度值传给它的旋转值。
试试看,你会发现武器会根据摇杆模拟器的位置相应旋转。请注意,武器是围绕之前设置的锚点旋转的。
创建炮弹
现在我们已经设置好角色和武器的控制,接下来要让武器发射炮弹,并让炮弹带有爆炸粒子效果。
从“Puzzle Pack”素材包中将“ball object”添加到场景,作为炮弹对象。
按照上方示意图修改它的属性,并确保它使用圆形碰撞形状。
炮弹碰撞时会发出爆炸粒子。要创建这些粒子,先进入素材文件夹,点击“Create Effects”类别,然后选择“Particles”选项。在此菜单中,从顶部选项中选择“Explosion”粒子。我们会使用默认的爆炸粒子作为炮弹效果。点击保存后,就能在素材文件夹的“Particles Folder”中看到新素材。
接下来,为炮弹添加行为。我们要设置炮弹在与任意对象碰撞时销毁,然后执行“Start Particles”行为,并为此行为指定之前创建的爆炸粒子。炮弹还应忽略与角色及其武器的碰撞。
控制发射威力
最后,我们要让武器能够发射炮弹,并创建一个用于决定武器发射威力的威力条。然后再添加一个发射按钮,用来生成并发射炮弹。
首先,创建一个“Health bar”,作为武器的发射威力条。操作方法与手动添加“武器旋转摇杆”相同:点击场景编辑菜单底部面板上的“瓶子图标”。
我们将它设置为高度大于宽度,并使用能够体现其用途的颜色。还要设置威力条从底部向上增长。
接下来,添加发射按钮。在素材文件夹的“UI Folder”中找到按钮素材对象。将它放在“跳跃按钮”旁边、威力条下方,并设置一个容易辨认的颜色。
然后,为发射按钮添加行为。
用户触碰按钮时,将威力条的百分比设为零。
按住按钮期间,威力条的数值会逐帧增加 1。首先获取当前进度,将其加上 1,然后把结果设为威力条的百分比。
松开发射按钮时,在大炮的炮口附近生成炮弹。“Spawn Object”行为的 Object B Anchor 应设在中间略偏上的位置。请确保开启回收开关,以节省内存。
然后,我们必须等待下一次物理更新,才能对新生成的炮弹施加力。
经过下一次物理更新后,我们就可以对生成的对象施加方向力。
我们将使用大炮的旋转角度来获取其归一化方向。归一化 x 方向通过余弦数学函数计算,输入值为大炮的旋转角度;y 方向则通过正弦数学函数计算,输入值相同。
获得归一化方向后,我们还需要一个根据威力条百分比计算的力乘数。首先获取威力条的百分比,然后将其乘以 5。我们稍微提高了威力,以匹配大炮所需的适当推力。
随后,将 x 和 y 方向的力以及力乘数传给“Apply Force”行为,并将该行为应用于生成的对象。
测试一下,按下发射按钮后,你就应该能够生成炮弹了。
恭喜!你已经在 hyperPad 上制作了一个简单的平台跳跃游戏,并为玩家配备了可控制的武器。现在就开始玩游戏,把那些箱子轰飞吧!

