Unity如何在玩家移动时让我的枪停止射击?

2024-03-16

enter image description hereI am making a gun shooting script, but I do not know how to disable shooting when the player is running. Can someone help me with that?

void Shoot()
{
    MuzzleFlash.Play();


    RaycastHit hit;
    if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, Range))
    {
        Debug.Log(hit.transform.name);

        EnemyHealth enemy = hit.transform.GetComponent<EnemyHealth>();
        if (enemy != null)
        {
            enemy.TakeDamage(Damage);
        }

    }
}

这是我的角色控制器脚本的运动部分:

void Movement()
{
    transform.Translate(Vector3.forward * Input.GetAxis("Vertical") * WalkSpeed * Time.deltaTime);
    transform.Translate(Vector3.right * Input.GetAxis("Horizontal") * WalkSpeed * Time.deltaTime);

    if (Input.GetKeyDown(KeyCode.LeftShift))
    {
        WalkSpeed = RunSpeed;
    }
    if (Input.GetKeyUp(KeyCode.LeftShift))
    {
        WalkSpeed = DefaultSpeed;
    }
}

您可以在其他脚本中设置变量,如下所示:

[Serialize Field]
private GameObject objectWithYourScriptYouNeed; 
private ClassOfScriptYouNeed pS; 


void Start()
{     
    pS = objectWithYourScript.GetComponent<ClassOfScriptYouNeed>();    
    pS.varName = 12345;
}

所以,在你的拍摄脚本中:

Public Bool isMoving;

void Shoot()
{
    //I'm assuming you also dont want muzzleflash to play.
    if (isMoving != true)
    {
        MuzzleFlash.Play();    

        RaycastHit hit;
        if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, Range))
        {

            Debug.Log(hit.transform.name);

            EnemyHealth enemy = hit.transform.GetComponent<EnemyHealth>();
            if (enemy != null)
            {
                enemy.TakeDamage(Damage);
            }
        }
    }
}

你的动作脚本:

//put your shooting scripts name below.
private ShootScript shootScript; 

void start()
{    

    shootScript = GetComponent<ShootScript>();

}

void Movement()
{
    shootScript.isMoving = Input.GetAxis("Vertical") != 0f 
                           || Input.GetAxis("Horizontal") != 0f ; 

    transform.Translate(Vector3.forward * Input.GetAxis("Vertical") 
                        * WalkSpeed * Time.deltaTime);
    transform.Translate(Vector3.right * Input.GetAxis("Horizontal") 
                        * WalkSpeed * Time.deltaTime);

    // GetKey is true on every frame that shift is held down, and false when it isn't
    // GetKeyDown is only true on the first frame in a row that shift is held down    
    if (Input.GetKey(KeyCode.LeftShift))
    {
        WalkSpeed = RunSpeed;
    }
    else 
    {
        WalkSpeed = DefaultSpeed;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity如何在玩家移动时让我的枪停止射击? 的相关文章

  • 如何从RichTextBox中获取显示的文本?

    如何获得显示的RichTextBox 中的文本 我的意思是 如果 RichTextBox 滚动到末尾 我只想接收那些对我来说可见的行 P S 获得第一个显示的字符串就足够了 您想使用 RichTextBox GetCharIndexFrom
  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • 如何在编译C代码时禁用警告?

    我正在使用 32 位 Fedora 14 系统 我正在使用编译我的源代码gcc 有谁知道如何在编译c代码时禁用警告 EDIT 是的 我知道 最好的办法是修复这些警告以避免任何未定义 未知的行为 但目前在这里 我第一次编写了巨大的代码 并且在
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 是否有像 gccxml 这样的用于生成包装器的 C 标头解析器工具?

    我需要为一种新的编程语言编写一些 C 标头包装器 并且想要类似 gccxml 的东西 但不完全依赖 gcc 以及它在 Windows 系统上带来的问题 只需要读C而不是C 只要有完整的文档记录 任何格式的输出都可以 Linux Solari
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • 格式化货币

    在下面的示例中 逗号是小数点分隔符 我有这个 125456 89 我想要这个 125 456 89 其他示例 23456789 89 gt 23 456 789 89 Thanks 看看这个例子 double value 12345 678
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • 在简单注入器中注册具有多个构造函数和字符串依赖项的类型

    我正在尝试弄清楚如何使用 Simple Injector 我在项目中使用了它 注册简单服务及其组件没有任何问题 但是 当组件具有两个以上实现接口的构造函数时 我想使用依赖注入器 public DAL IDAL private Logger
  • 错误左值需要作为赋值C++的左操作数

    整个程序基本上只允许用户移动光标 如果用户位于给定的坐标范围 2 2 内 则允许用户键入输入 我刚刚提供了一些我认为足以解决问题的代码 我不知道是什么导致了这个问题 你能解释一下为什么会发生吗 void goToXY int int 创建一
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • .NET JIT 编译的代码缓存在哪里?

    NET 程序首先被编译为 MSIL 代码 当它被执行时 JIT编译器会将其编译为本机机器代码 我想知道 这些JIT编译的机器代码存储在哪里 它只存储在进程的地址空间中吗 但由于程序的第二次启动比第一次快得多 我认为即使在执行完成后 该本机代
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • “int i=1,2,3”和“int i=(1,2,3)”之间的区别 - 使用逗号运算符的变量声明[重复]

    这个问题在这里已经有答案了 int i 1 2 3 int i 1 2 3 int i i 1 2 3 这些说法有什么区别 我无法找出任何具体原因 Statement 1 Result Compile error 运算符的优先级高于 运算符
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task
  • 无法使 Polly 超时策略覆盖 HttpClient 默认超时

    我正在使用 Polly 重试策略 并且正如预期的那样 在重试过程中HttpClient达到 100 秒超时 我尝试了几种不同的方法来合并 Polly 超时策略 将超时移至每次重试而不是总计 但 100 秒超时仍然会触发 我读过大约 5 个

随机推荐

  • 使用批处理从文件夹中打开随机文件

    我是一名正在学习编程的艺术家 我想创建一个批处理文件 该文件将从我的参考文件夹中选择一个随机图片文件 目标是获得一张随机图片来进行处理和学习 我环顾四周 看到的回复很难理解 而且经常与我不需要的其他特性和功能相关联 简而言之 如何制作一个从
  • “AppName”不再可用

    我在通过 Xcode 软件在 iPad 上安装应用程序而未将其上传到 Apple Store 时遇到了问题 我注意到几天后该应用程序停止工作 无法打开并显示一条消息 应用程序名称 不再可用 请问这个问题有什么办法解决吗 该应用程序是个人的
  • dotnet aspnet-codegenerator 工具未找到 Microsoft.VisualStudio.Web.CodeGeneration.Design

    我刚刚创建了一个 MVC 应用程序dotnet new mvc name test project netcoreapp3 1 没有任何类型的数据库访问和身份 我想手动添加以用于自定义目的 然后我添加了一些包以便使用dotnet aspne
  • 升级 Knex 后出现“获取连接超时”

    在我的公司 我们的应用程序在多个 EC2 实例和一个 RDS 数据库上的 NodeJS 上运行 我们的应用程序需要一些升级 因为一些依赖项已经相当旧了 我们所做的引起我们注意的升级之一是更新我们的数据库库 mysql 从 2 16 0 到
  • Caffe 准确率大于 100%

    我正在构建一个 但是当我使用上提供的自定义火车功能时莱内特示例 http nbviewer ipython org github BVLC caffe blob master examples 01 learning lenet ipynb
  • 如何使用客户端/服务器 Nailgun(在 Debian Stretch 上)运行简单的 Java 程序?

    我尝试使用Nailgun http www martiansoftware com nailgun on Debian GNU Linux 9 延伸 Nailgun 是一个客户端 协议和服务器 用于从命令行运行 Java 程序 而不会产生
  • 恢复用python删除的文件

    所以 我使用 python 删除了一个文件 我在回收箱中找不到它 有什么办法我可以undo它或其他东西 提前致谢 编辑 我用过os remove 我尝试过Recuva 但似乎没有发现任何东西 我做了深入的搜索 如果你用过os remove并
  • 使用 4 个线程获取/释放语义

    我目前正在阅读 Anthony Williams 撰写的 C Concurrency in Action 他的清单之一显示了这段代码 他指出以下断言z 0可以开火 include
  • 我应该使用 java.text.MessageFormat 来处理没有占位符的本地化消息吗?

    我们正在本地化在 Java 5 上运行的 Web 应用程序的用户界面文本 并且对于如何输出在属性文件中定义的消息 使用的类型 遇到了困境 java util Properties http java sun com j2se 1 5 0 d
  • 宏有什么好的用途吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 据我所知 宏在编译器正确看到程序文本之前就重新排列了它 因此可能会导致问题 我很少在 C 代码中看到它们 大部分是在 C 代码中 我所
  • SwiftUI 工作表显示包含错误数据的工作表

    我有一个显示 1 2 和 3 的列表 点击文本时 应用程序会打开一张包含点击数字的工作表 但是 如果我点击第二行或第三行中的文本 工作表中显示的数字仍然是 1 我做错了什么 import SwiftUI struct ContentView
  • Mac OS 登录项是否带有参数?

    在 Mac OS 中 我创建了一些 AppleScript 来添加和删除启动应用程序 帐户 系统窗格下的 登录项 bin bash usr bin osascript e tell application System Events to
  • 在最后一次出现的字符处拆分然后连接

    我想分割一个attribute在最后一次出现字符时 添加一个字符串并将数组重新连接在一起 这是一个简化的demo https jsfiddle net Ldjoqtk1 1 在演示中我想拆分src最后一次出现的属性 然后添加 fx to t
  • Node.js 生成的 csv 文件显示英镑符号 (£)

    我正在用这个json2scv https github com zemirco json2csv包解析我的数据 示例 json 数据在下面的代码中描述 我正在尝试使用以下代码在我的 Node js 应用程序中生成 CSV 文件 如果我在 E
  • jquery 对话框打开时窗口向上滚动

    我正在尝试使用 jquery 1 4 和 jquery ui 1 8rc3 custom js 打开模态 jquery 对话框 在所有浏览器中 对话框打开都没有问题 但在 IE 7 和 6 中 对话框打开后 窗口会自行滚动到底部 我尝试将窗
  • 如何将 Selenium 输出导出到 PHP?

    Firefox 的 Selenium IDE 似乎没有默认导出到 PHP 我需要 Selenium 才能将其输出转换为 PHP 以在 Drupal 中使用 如何安装PHP语言导出才能达到这个目标 现在它是 mozilla 中的一个附加组件
  • 显示 GDB 中当前的汇编指令

    我正在 GDB 中进行一些汇编级调试 有没有办法让 GDB 以与显示当前源代码行相同的方式显示当前的汇编指令 每个命令后的默认输出如下所示 0x0001433f 990 Foo bar p 这给了我当前指令的地址 但我必须继续参考disas
  • Bokeh HTML 模板格式化程序不起作用

    请看一下页面 https docs bokeh org en latest docs reference models widgets tables html bokeh models widgets tables HTMLTemplate
  • Express 路由器参数验证

    Express 4x api 文档声称您可以将正则表达式作为第二个参数传递给router param http expressjs com 4x api html router param为了验证参数 该方法现在可用于有效验证参数 以及 可
  • Unity如何在玩家移动时让我的枪停止射击?

    I am making a gun shooting script but I do not know how to disable shooting when the player is running Can someone help