Unity游戏Mod开发:如何让爆炸位置与人类单位死亡位置一致
修改方案
你当前代码爆炸位置固定的原因是Position字段被硬编码为了常量坐标new Vector3(5, 5, 5),只需将其替换为死亡单位的实时世界坐标即可。
事件参数中的life就是触发本次死亡事件的人类单位的生命值组件,Unity标准逻辑下可以通过transform.position获取其所在的世界坐标,修改后的代码如下:
ModAPI.OnDeath += (sender, life) => { // 提前校验对象有效性,避免空引用异常 if (life == null || life.transform == null) return; ExplosionCreator.Explode(new ExplosionCreator.ExplosionParameters { Position = life.transform.position, CreateParticlesAndSound = true, LargeExplosionParticles = false, DismemberChance = 0.1f, FragmentForce = 8, FragmentationRayCount = 32, Range = 10 }); };
可选优化
如果希望爆炸生成位置更贴合人类的躯干位置而非脚底,可以给坐标加上高度偏移:
Position = life.transform.position + new Vector3(0, 1.2f, 0)
你可以根据游戏内人类单位的实际身高调整Y轴偏移值。
内容的提问来源于stack exchange,提问作者JustAMeanie
相关产品推荐
相关产品推荐

