不知道如何获得敌人的生命值

2023-12-13

我有这个代码,但我不知道为什么hit.collider.gameObject.GetComponent("health")返回 null

void Shoot() {
        Vector2 mousePosition = new Vector2 (Camera.main.ScreenToWorldPoint (Input.mousePosition).x, Camera.main.ScreenToWorldPoint (Input.mousePosition).y);
        Vector2 firePointPosition = new Vector2 (firePoint.position.x, firePoint.position.y);
        RaycastHit2D hit = Physics2D.Raycast (firePointPosition, mousePosition - firePointPosition, bulletRange, whatToHit);
        if (Time.time >= timeToSpawnEffect) {
            Effect ();
            timeToSpawnEffect = Time.time + 1/effectSpawnRate;
        }

        if (hit.collider != null) {
            if (hit.collider.name == "Enemy") {
                Debug.Log(hit.collider.gameObject.GetComponent("health"));
            }
            //Debug.Log("We hit " + hit.collider.name + " and did " + damage + " damage");
        }

    }

这是我的敌人脚本

using UnityEngine;
using System.Collections;

public class EnemyAI : MonoBehaviour
{

    public float health = 100f;
    //... rest of the code
}

您需要获取附在敌人身上的脚本的参考。然后使用该脚本来操纵健康状况。

找到游戏对象。

 GameObject g = hit.collider.gameObject;

获取脚本的参考。

 EnemyAI e = g.GetComponent<EnemyAI>();

操纵健康。

 e.health = 0f;

如果你想成为坏蛋,就一句话。

 hit.collider.gameObject.GetComponent<EnemyAI>().health = 0.0f;

额外提示:health应该private and EnemyAI该变量应该有一个 setter 和一个 getter。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不知道如何获得敌人的生命值 的相关文章

  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • 双线性序列给出奇数结果

    我试图让我的表现技能 不存在 达到标准 但在将公式写入代码时遇到了问题 这是我试图将其引用为 转换 为代码的公式 考虑一个序列 u 其中 u 定义如下 号码u 0 1是第一个u 对于每个x in u then y 2 x 1 and z 3
  • C语言中的递归是如何工作的?

    我试图了解 C 中递归的工作原理 任何人都可以给我解释控制流吗 include
  • C++ 返回值、引用、const 引用

    你能向我解释一下返回值 值引用和值常量引用之间的区别吗 Value Vector2D operator const Vector2D vector this gt x vector x this gt y vector y return t
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 使用预编译头减少 clang 编译时间

    我正在开发一个数据库项目 该项目将查询 以某种高级语言表示 编译为 C 代码 这段代码由数据库编译并执行 那部分工作得很好 现在 我正在尝试减少 C 查询代码的编译时间 我想知道是否可以使用预编译头来提高性能 该查询被转换为一个名为 Que
  • 在 DataGridView 中隐藏行非常慢

    我在 Winforms 应用程序中有一个 DataGridView 大约有 1000 行 未绑定 和 50 列 隐藏一列需要整整 2 秒 当我想隐藏大约一半的行时 这就成为一个问题 private void ShowRows string
  • 宏可以按参数数量重载吗?

    如何this https stackoverflow com q 9183993 153285工作 如何实现 C99 C 11 可变参数宏以仅根据为其提供多少个参数来扩展到不同的事物 编辑 请参阅末尾以获得现成的解决方案 要获得重载的宏 首
  • 求一个数的因数。无法得到准确的结果

    有人可以帮助纠正我的算法吗 我已经对几个数字进行了测试 但它没有输出完整的因式分解 对于具有大量因子的数字 它完全失败 int num 20 for int i 2 i lt num i if num i 0 cout lt lt i lt
  • Qt QML 数据模型似乎不适用于 C++

    我一直在使用中的示例http doc qt digia com 4 7 qdeclarativemodels html http doc qt digia com 4 7 qdeclarativemodels html这是 QML 声明性数
  • C++ 错误:从“char”到“const char*”的转换无效

    我对 C 完全陌生 我创建了这个函数 bool guessWord string compWord cout lt lt Guess a letter string userLetter cin gt gt userLetter for u
  • printf() 使用字符串表“解码器环”调试库

    我写这封信是想看看你们中是否有人见过或听说过我即将描述的想法的实现 我有兴趣为嵌入式目标开发 printf 风格的调试库 目标非常遥远 并且我和目标之间的通信带宽预算非常紧张 因此我希望能够以非常有效的格式获取调试消息 通常 调试语句如下所
  • 带有自定义鉴别器的 EntityFramework Code First 继承

    我正在尝试在 EntityFramework Code First 中映射以下继承 public class Member public string ProjectName get set public string AssemblyNa
  • 该组件没有由 uri 标识的资源

    我想创建一个通用数据网格以在我的所有视图 用户控件上使用 这是我的结构 Class Library called Core Class called ViewBase public class ViewBase UserControl pu
  • 如何解决内存碎片

    我们偶尔会遇到这样的问题 长时间运行的服务器进程 在 Windows Server 2003 上运行 由于内存分配失败而引发异常 我们怀疑这些分配由于内存碎片而失败 因此 我们一直在寻找一些可能对我们有帮助的替代内存分配机制 我希望有人能告
  • 非静态类中的静态方法和静态类中的静态方法有什么区别?

    我有两个班级A级和B级 static class ClassA static string SomeMethod return I am a Static Method class ClassB static string SomeMeth
  • 从 exit() 和 fork() 返回的结果奇怪地发生了位移

    我有一个 C 代码 有时会自行分叉 每个分叉都会执行一些操作 然后返回一个错误代码 目前 每个子进程返回其 ID 0 n void other int numero exit numero int main for int i 0 i lt
  • C# Julian 日期解析器

    我在电子表格中有一个单元格 它是 Excel 中的日期对象 但当它来自 C1 的 xls 类时 它会变成双精度型 类似于 2009 年 1 月 7 日的 39820 0 我读到这是儒略日期格式 有人可以告诉我如何在 C 中将其解析回 Dat
  • 扔掉挥发物安全吗?

    大多数时候 我都是这样做的 class a public a i 100 OK delete int j Compiler happy But is it safe The following code will lead compilat
  • 从 STL 列表中删除项目

    我想创建一个函数 如果符合特定条件 则将项目从一个 STL 列表移动到另一个列表 这段代码不是这样做的方法 迭代器很可能会被擦除 函数失效并导致问题 for std list

随机推荐

  • HTML5 将画布保存为 PNG

    我按照这个示例将画布保存到 PNG 文件 http greenethumb com article 1429 user friend image saving from the canvas 我的问题 下载的文件已损坏 当我在记事本中打开它
  • 为什么调试器不会将 win32 计时器回调中引发的未处理异常视为未处理异常?

    我一直在追踪工作中一个非常阴险的错误 似乎导致我一直在追踪的非常奇怪的行为的事件似乎是在处理计时器回调时引发的异常 我的任何代码都没有处理该异常 因此我希望调试器能够收到未处理异常的通知 并通过一个令人讨厌的弹出窗口提醒我 不 相反 第一次
  • 有没有办法访问向量中的索引

    我需要访问向量内的索引 单个值 我认为它会类似于 v1 lt c a b c d e v1 3 h 但这似乎根本不起作用 其他人知道该怎么做吗 编辑 好吧 回答你的一些问题 这是我想要实现的总体目标的大图 MyDataR1 lt scan
  • 多线程签名生成C#

    我正在使用符合 PKCS11 标准的加密设备来保护我的私钥 加密设备每秒能够生成 500 个 RSA 2048 位签名 我用 C NET 编写了一个与 PKCS11Interop Wrapper 交互的应用程序 这是我的代码 region
  • Pythonic / Panda 方式创建 Groupby 函数

    我对编程相当陌生 正在寻找一种更Pythonic 的方法来实现一些代码 这是虚拟数据 df pd DataFrame Category np random choice Group A Group B 10000 Sub Category
  • MSBuild 条件执行?

    我正在使用 E g
  • 如何在 Swift 中使带有循环的函数异步?

    我正在为图书馆创建一个应用程序 我正在尝试获取用户从 Firebase 签出的所有书籍 但我尝试使该函数与 DispatchGroup 异步似乎不起作用 我怀疑这是因为函数内部发现了 for in 循环 func fetchHistory
  • CSS固定标题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我正在尝试将标题固定在顶部 我看过其他帖子并确信我做得正确 这是标题的 CSS header width 100 position fixed top 0px 由于某种原因
  • 验证字符串仅包含 Ruby 中允许的字符

    如何测试 Ruby 字符串是否仅包含特定字符集 例如 如果我允许的字符集是 AGHTM 加数字0 9 字符串 MT3G22AH is valid 字符串 TAR34 is invalid 因为R 一个非常惯用的非正则表达式解决方案是使用字符
  • Cocoapods:未找到库

    我正在尝试运行 Cocoapods 项目并收到以下错误 我尝试过了pod deintegrate进而pod install但它仍然存在 我也尝试删除pod debug xcconfig文件来自Project gt Info gt Confi
  • Spring 数据出现 ne04j 错误...检索路径时出错

    我将 spring 数据与 neo4j 一起使用 I used Query注解将查询放置在存储库中 查询如下 Query value START me node 0 friend node 1 MATCH p shortestPath me
  • 空手道 + 黄瓜报告缺少所调用场景响应的文档字符串

    Cucumber 报告缺少来自调用场景的响应的文档字符串 在给定的场景中 我使用 Call 调用多个场景 它的打印有时会随机响应所调用的场景 有时则不会 这阻碍了我们在测试报告中可视化API之间的数据流 尽管空手道日志有来自该调用场景的响应
  • 避免文本区域行/列错误?

    我正在使用几页验证工具我遇到的一个问题是他们告诉我 textarea 必须有 rows 和 cols 属性 如果我在 CSS 中设置它或使用 display none 并使用它来保存原始文本数据 我可以做一些跳过的事情吗 每次我使用它时 似
  • 删除缺失超过 x% 的列/行

    我想删除所有超过 50 的列或行NAs 在数据框中 这是我的解决方案 delete columns with more than 50 missings miss lt c for i in 1 ncol data if length wh
  • 如何创建一个通用例程来计时方法?

    我需要测量应用程序上下文中许多不同方法的执行情况 NET 当然有 Stopwatch 类 它允许人们使用它的 Start 和 Stop 方法轻松地对一段代码进行计时 然而 以正常方式使用 Stopwatch 类需要我用 Stopwatch
  • 如何等待所有线程完成工作?

    我有以下脚本 不参考内容 import thread def func1 arg1 arg2 print Write to CLI def verify result func1 for in range 4 thread start ne
  • C++ 将 mac id 字符串转换为 uint8_t 数组

    我想从命令行读取 mac id 并将其转换为数组uint8 t在结构中使用它的值 我无法让它工作 我有一个 mac id 分割的字符串向量 我想用stringstream转换他们没有运气 我缺少什么 int parseHex const s
  • 使用本质锁进入块

    我不明白以下代码如何产生似乎违反对象锁定义的输出 当然应该只允许一个线程打印 已获取锁 消息 但它们都这样做吗 class InterruptThreadGroup public static void main String args O
  • addToBackStack 参数为 null 是什么意思?

    我有一个客户代码 所有片段只有一个活动 即单个活动正在管理所有片段 此活动在该片段的方法末尾包含任何片段的以下代码 例如 片段MoreFragment MoreFragment firstFragment new MoreFragment
  • 不知道如何获得敌人的生命值

    我有这个代码 但我不知道为什么hit collider gameObject GetComponent health 返回 null void Shoot Vector2 mousePosition new Vector2 Camera m