COCOS:(飞机大战09)敌机注册碰撞事件,控制敌机的销毁

先区分要监听谁,子弹打到飞机上,飞机去播放动画,并完成销毁操作,注册碰撞事件就写在飞机上。
在这里插入图片描述

飞机预制体都绑定了Enemy.ts,注册事件就写到这个文件内

import { _decorator, Animation, Collider2D, Component, Contact2DType, IPhysics2DContact, Node } from 'cc';
const { ccclass, property } = _decorator;@ccclass('Enemy')
export class Enemy extends Component {/*** collider:Collider2D  注册碰撞事件* speed:number         控制敌机 从上到下的移动,多少米每秒的向下移动* hp:number            控制飞机的血量,默认小飞机血量为1,不同的飞机血量也不同* anim:Animation       控制飞机的销毁动画* animHit              飞机被击中的动画* animDown             飞机没有血量后,坠落的动画*/collider:Collider2D = null;@propertyspeed:number = 300;@propertyhp:number = 1@property(Animation)anim:Animation = null;@property(String)animHit:string = '';@property(String)animDown:string = '';start() {// 注册单个碰撞体的回调函数this.collider = this.getComponent(Collider2D);if (this.collider) {this.collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);}}protected onDestroy(): void {// 销毁if (this.collider) {this.collider.off(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);}}// 发生接触的方法/*** * @param selfCollider 指的是回调脚本的节点上的碰撞体(当前的飞机);* @param otherCollider 指的是发生碰撞的另一个碰撞体(子弹);* @param contact */onBeginContact(selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null){/*** otherCollider.enabled = false  这段代码理解为子弹和飞机碰撞发生后,销毁碰撞的子弹。* 但是这里有个BUG,如果飞机A碰撞到了飞机B,也会触发otherCollider,可能会把飞机销毁。* 需要修改为:只让子弹和敌机发生碰撞,飞机A和飞机B之间不能发生碰撞* 在触发器:BoxCollider2D中有一个Group选项,可以设置那些组和哪些组之间发生碰撞* * * 如果血量>0,播放被击中的动画* 如果血量<0,播放坠落的动画* 如果血量<=0了* 就要禁用这个监听,否则会出现重复播放动画的BUG* scheduleOnce:定时器1秒后,就销毁掉当前这个飞机*/otherCollider.enabled = false;this.hp -= 1;if(this.hp>0){this.anim.play(this.animHit)}else{this.anim.play(this.animDown)}if(this.hp<=0){// 血量==0了,就需要禁用这个监听。否则会重复播放动画。if(this.collider){this.collider.enabled = false;}// 等动画播放完成,1秒后在销毁this.scheduleOnce(function(){this.node.destroy()},1)}}update(deltaTime: number) {// 如果血量大于0,就沿Y轴自上向下运动if(this.hp>0){const pos = this.node.position;this.node.setPosition(pos.x,pos.y-this.speed*deltaTime,pos.z)}// 以最大的飞机为例,超出屏幕边界是-600,超过这个边界,就销毁掉if(this.node.position.y<-600){this.node.destroy()}}
}

触发器:BoxCollider2D的Group选项,可以设置那些组和哪些组之间发生碰撞

在这里插入图片描述
设置好分组之后,去预制体中勾选对应的分组完成
在这里插入图片描述
子弹设置分组也一样,选择Bullet分组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/422047.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postman互转 json报文变为表单报文bulk

{"age":0"username":"chengyaojin""password":"944621""createDate":"2021-01-06" }age:0 username:chengyaojin password:944621 createDate:2021-01-06json转postman的bulk工具推荐在线json与postman…

Benvista PhotoZoom Pro / Classic 9.0.2 Win/mac + Plug-in中文破解版

对数码照片放大的质量不满意&#xff1f; 使用 BenVista PhotoZoom Classic9 调整图像大小&#xff0c;并通过我们屡获殊荣的独特 S-Spline 技术获得出色的效果&#xff01; 更高质量&#xff1a;PhotoZoom Classic9 专门用于在保持质量的同时放大照片。 该软件配备了 BenVista…

C++ 在项目中使用Linux命令

一: 选择shell Linux 命令是由shell解析并转发给操作系统执行的&#xff0c;所有的shell都是从 Bourne shell&#xff08;/bin/sh&#xff09;派生的&#xff0c;Bourne shell是贝尔实验室为早期版本的Unix开发的标准shell。 每个Unix系统都需要一个版本的Bourne shell才能正…

你还在手动重复工作吗?用PowerShell让电脑为你跑腿!

嘿,朋友,你有没有遇到过这种情况?每天都要做一些重复、无聊的工作,觉得自己简直像个机器人。比如整理文件、备份数据、批量重命名……说实话,干这些事可真浪费时间!但你有没有想过,让电脑自己去搞定这些烦人的任务?这就是今天我们要聊的——PowerShell,一个能帮你轻松…

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?idKS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的&#xff0c;这引发了人们的…

LabVIEW回转马达试验系统

基于LabVIEW的回转马达试验台通过高度集成的硬件与软件配合&#xff0c;实现对回转马达的各项性能测试&#xff0c;包括空载排量、跑合试验和冲击试验等&#xff0c;以满足出厂测试的严格标准和要求。 项目背景 回转马达作为多种机械设备的核心动力源&#xff0c;其性能的可靠…

干货分享丨智造底座——AI算力池化的必要与实践

为了帮助工业企业更好地了解数据存储及管理的应用趋势&#xff0c;e-works在线学院于2022年9月23日14:00举办了以“工业数据存储及管理”为主题的线上研讨会。 趋动科技售前工程师Johny Hong受邀作主题分享&#xff0c;并与线上几千观众共同探讨了建设智造底座——AI算力池化的…

哪个牌子的护眼台灯性价比高?2024年五款性价比高护眼台灯推荐

现在不止是小孩子需要保护眼睛&#xff0c;而我们的成年人也是需要保护眼睛。因为现在上班压力大&#xff0c;下班回家加班也成了日常操作&#xff0c;每天用眼&#xff0c;对着电子产品的时间也会很久&#xff0c;眼睛会感到不舒服。回到家中&#xff0c;我们就需要一款好的护…

word文档的读入(6)

上一个方式&#xff0c;虽然能获取到标准答案和所对应的学生答案&#xff0c;但代码不够简单和优雅。这时&#xff0c;可以用另一种方式来实现&#xff1a;遍历索引。 定义 简单来说&#xff0c;enumerate()函数用来遍历一个可遍历对象中的元素&#xff0c;同时通过一个计数器…

Matlab simulink建模与仿真 第十二章(信号属性库)

参考视频&#xff1a;simulink1.1simulink简介_哔哩哔哩_bilibili 一、信号属性库中的模块概览 1、信号属性操作库 注&#xff1a;数据类型转换模块在第二章中有介绍&#xff0c;本章不再赘述&#xff1b;数据类型传播实例在本章也不进行介绍。 2、信号属性检测库 二、数据类…

构建高效入学审核系统:Spring Boot解决方案

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理大学生入学审核系统的相关信息成为必然。开…

今年白银市场的供需关系矛盾

自从2020年以来&#xff0c;白银手持连续4年都出现了供需缺口&#xff0c;预计今年的供需缺口将进一步扩大。2015年以来&#xff0c;白银总产量始终维持10亿盎司水平上下波动&#xff0c;2015~2023年的年均复合增速在0.4%&#xff0c;预计2024年的产量将下降1%。矿产银的产量从…

万字长文分享腾讯云原生微服务治理实践及企业落地建议

前言 云原生时代&#xff0c;越来越多的企业借助于微服务与容器化&#xff0c;来提升业务弹性与研发协作效率。Dubbo、Spring Cloud、Istio、Dapr 等各类微服务生态组件百家争鸣。从腾讯内部的 CL5 到 ONS、Taf 等&#xff0c;我们也在服务治理的道路上不断的研究探索&#xf…

【开源免费】基于SpringBoot+Vue.JS房产销售系统(JAVA毕业设计)

本文项目编号 T 028 &#xff0c;文末自助获取源码 \color{red}{T028&#xff0c;文末自助获取源码} T028&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 销…

『功能项目』管理器基类【38】

我们打开上一篇37单例模式框架的项目&#xff0c; 本章要做的事情是编写管理器基类 首先创建脚本&#xff1a;ManagerBase.cs using UnityEngine; public abstract class ManagerBase : MonoBehaviour{public virtual void Init() { } } public class ManagerBase<T> : …

详细讲解hive on tez中各个参数作用,以及如何优化sql

最近经常有优化sql的任务&#xff0c;但是自己能力有限&#xff0c;只能凭经验去优化&#xff0c;现整理加学习一波&#xff0c;也欢迎各位学习和讨论。 我们经常用hivesql 的模型就是 join.如下。 insert overwrite table a select * from b left join c 这里面发生了什么…

医学AI再度得到国自然重大专项青睐,10个立项机会,4000万经费虚位以待|个人观点·24-09-12

小罗碎碎念 昨天国自然基金委公布了几个专项项目&#xff0c;看标题我以为和医学AI无关&#xff0c;多亏了群里的一位小伙伴给我转发指南链接&#xff0c;我才看到与医学AI相关的内容。 项目名称是“重大疾病智慧诊疗”&#xff0c;直接费用总额度约3000-4000万元。计划资助联合…

UE5------光照渲染

自动曝光-------出隧道的一瞬间&#xff0c;外面会非常的亮

【问题回溯】记录处理launcher3滑动卡顿问题

项目问题背景问题描述分析过程初步分析挖根因验证观点修改和验证 结论和反思结论反思 项目 Android14&#xff0c;展锐T606 问题背景 老平台升级Android13升级到Android14&#xff0c;对此问题无影响 问题描述 客户反馈在launcher应用列表中滑动卡顿明显&#xff0c;选中的…

人工智能|集成学习——混合专家模型 (MoE)

随着 Mixtral 8x7B (announcement, model card) 的推出&#xff0c;一种称为混合专家模型 (Mixed Expert Models&#xff0c;简称 MoEs) 的 Transformer 模型在开源人工智能社区引起了广泛关注。在本篇博文中&#xff0c;我们将深入探讨 MoEs 的核心组件、训练方法&#xff0c;…