欢迎光临散文网 会员登陆 & 注册

【飞机游戏】【Cocos】【P2】实现飞机和子弹的碰撞逻辑

2023-07-20 12:48 作者:Code有毒  | 我要投稿

0 上一期我们实现了创建敌机以及发生敌机子弹的功能。本期我们将实现飞机与子弹间的碰撞逻辑。

0.1 设置碰撞检测逻辑。

0.2 设置飞机和子弹的碰撞盒。

0.3 处理飞机发生碰撞后的行为。

0.4 处理子弹发生碰撞后的行为。

1.0 设置碰撞检测逻辑。

1.1 我们首先弹出引擎的Project栏的Projection Settings框。

1.2 选中Physics栏,在Collision Matrix里输入4个对象分别表示玩家飞机、敌机、玩家子弹、敌机子弹。碰撞矩阵的逻辑是一个2进制掩码的矩阵。通过逻辑判断即可设置其碰撞逻辑。此时玩家飞机能与敌机和敌机子弹碰撞,敌机能与玩家飞机及玩家子弹碰撞,玩家子弹可以与敌机和敌机子弹碰撞,敌机子弹可以与玩家飞机及玩家子弹碰撞。


2.0 设置飞机和子弹的碰撞盒。

2.1 进入玩家飞机的预制信息(prefab)。

2.2 点击Add Component添加碰撞碰撞包围盒,调整包围盒的尺寸及位置,让其贴合这包裹住飞机模型。

2.3 再次点击Add Component将玩家飞机设置为运动学刚体,碰撞类型设置为玩家飞机(SELF_PANE)。

2.3 使用相似的逻辑设置敌机的碰撞信息。不同的地方在于敌机的碰撞类型要设置为ENEMY_PANE。

2.4 使用相似的逻辑设置子弹的碰撞信息。此时子弹的碰撞类型有两种:一种是玩家子弹(SELF_BULLET),另一种是敌机子弹(ENEMY_BULLET)。我们此时只需要设置为其中一种情况即可。之后在脚本中的实例化子弹模块里我们可以再灵活处理其碰撞类型。

 


3.0 处理飞机发生碰撞后的行为。

3.1 在constant中添加4种碰撞类型。

3.2 设置玩家飞机的碰撞事件监听回调函数。当玩家飞机与敌机及敌机子弹碰撞时,在控制面板打印掉血(实际的掉血工作之后再开发)。

3.3 设置敌机的碰撞事件监听回调函数。当敌机与玩家飞机及玩家子弹碰撞时,销毁敌机实例对象的节点。

 


4.0 处理子弹发生碰撞后的行为。

4.1 在实例化敌机和玩家子弹时,设置对像碰撞的Group类型,以及掩码类型。其中敌机子弹的Group为SELEF_BULLET,掩码为ENEMY_PLANE和ENEMY_BULLET。玩家子弹的Group为ENEMY_BULLET,掩码为SELEF_PLANE和SELEF_BULLET。

4.2 设置敌机子弹的碰撞事件监听回调函数。子弹只要一发生碰撞就直接销毁实例的对象节点。

4.3 运行游戏后可以看到。


【飞机游戏】【Cocos】【P2】实现飞机和子弹的碰撞逻辑的评论 (共 条)

分享到微博请遵守国家法律