c# - 从碰撞的对象中获取变量
问题描述
我正在尝试减少被子弹击中的敌人的生命值。子弹有不同的伤害值,它们存储在“子弹”脚本中,而敌人的生命值存储在“敌人”脚本中。所以我基本上是想从当前击中敌人的子弹上的“子弹”脚本中获取伤害值。
void OnTriggerEnter2D(Collider2D collision) {
if (collision.tag == "bullet") {
healthCur -= 50f; // trying to reduce health by bullet damage instead of fixed 50hp
if (healthCur <= 0) {
Die();
}
}
}
我在这件事上看到了类似的问题,但还没有找到可行的解决方案,所以如果这是重复的,那么除了重复链接之外,获得更多信息会很好。
谢谢。
解决方案
假设子弹类被调用Bullet
并且它有一个字段Damage
void OnTriggerEnter2D(Collider2D collision) {
if (collision.tag == "bullet") {
healthCur -= collision.gameObject.GetComponent<Bullet>().Damage;
if (healthCur <= 0) {
Die();
}
}
}
https://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html
推荐阅读
- marklogic - 如何区分没有 http 应用程序命中 ML 和 ML 没有响应?
- powershell - PowerShell ForEach libreoffice 转换
- c# - 以递归方式遍历 jsondocument
- javascript - React如何更新api json中的嵌套数组?
- reactjs - 为什么这个 ProtectedRoute 配置给我错误
- azure-powershell - 计算应用服务计划的平均 CPU 利用率
- javascript - 如何将字符串数组转换为对象?
- python - shell如何获取python设置的环境变量
- tfs - 工作项类型 (WIT) 状态之间的自动转换
- python - 我不明白 python 文档中的符号