unity 2D游戏碰撞道具增加气血效果&受伤掉血效果
代码并不高效,仅以实现效果为目的.
被攻击时调用(需要传入HP预制件父级对象)
1 //受到伤害时,掉血 2 public void OnHurt(Transform HP) 3 { 4 print("触碰到了怪物..."); 5 //遍历父级对象 6 for (int i = HP.childCount - 1; i >= 0; i--) 7 { 8 //创建临时变量T,假设是最后一个元素 9 int t = HP.childCount - 1; 10 //比对一致时,表示找到了一样的子级 11 if (i == t) 12 { 13 //说明还有血 14 if (i > 0) 15 { 16 print(i); 17 print("还有血..."); 18 //删除最后一个对象(小红心) 19 Destroy(HP.GetChild(t).gameObject); 20 } 21 else 22 { 23 print("没血了"); 24 //没血了,重新加载当前场景 25 ReStart(); 26 } 27 } 28 } 29 }
触碰加血道具对象时调用(需要传入HP预制件父级对象)
1 //触碰加血道具时,加血 2 public void AddHp(Transform hp) 3 { 4 if (hp.childCount == 10)//满血限制 5 { 6 print("满血了"); 7 return; 8 } 9 10 //临时变量,存储HP父级最后一个子级的坐标x 11 for (int i = hp.childCount - 1; i > 0; i--) 12 { 13 //创建临时变量,用于存储最后一个元素; 14 var t = hp.childCount - 1; 15 //相等时,表示找到最后一个元素 16 if (i == t) 17 { 18 //获取最后一个元素的x,Y坐标 19 var posX = hp.GetChild(i).gameObject.transform.position.x; 20 var posY = hp.GetChild(i).gameObject.transform.position.y; 21 //Instantiate(要生成的对象预制件,坐标,旋转,父级)x轴偏移值,可以自行更改 22 Instantiate(hp_yzj, new Vector3(posX += 39f, posY, 1), Quaternion.identity, hp); 23 } 24 } 25 }
效果
时间若流水,恍惚间逝去
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?