记录区域周围经过的时间单位

如何解决记录区域周围经过的时间单位

我不熟悉团结,想创建一个具有可移动对象和显示网格的场景。当对象移动到网格区域时,我希望它记录在网格上花费的时间,一旦它离开指定的网格区域,我想接收它在网格中花费的时间。我尝试使用此代码。

if (collision.gameObject.name == "GridHolder")
{
    stopwatch.Start();
    isInSection1 = true;
    isInSection2 = false;
    Debug.Log("In area");
    if (!(collision.gameObject.name == "GridHolder"))
    {
        stopwatch.Stop();
        Debug.Log("Left area");
        Debug.LogFormat("Time elapsed: {0}",stopwatch.Elapsed);

    }
}

我已经尝试过了,它不会显示时间。我测试了它是否确实在第一个if语句中使用了经过时间的语句来记录时间。当我将物体带回该区域时,它会记录时间并继续记录和消逝时间。

解决方法

秒表功能不会暂停您的代码/等待,因此您将检查是否永远不会运行剩余的游戏对象,因为ifstatement仅在您运行第一个ifstatement时才运行(基本上它将始终为false)。

if(collision.gameObject.name == "GridHolder"){
    if (!(collision.gameObject.name == "GridHolder")){
        //This if statement will never run,as the previous if statement contradicts this one.
}

您应该使用OnTriggerEnterOnTriggerExit来启动和停止秒表。

,

要扩展ChilliPenguin(14082731)的答案,您的代码永远不会到达内部的原因是,因为您的条件指定,为了运行外部代码块,对撞机必须是您的网格,然后按顺序要运行内部代码块,对撞机也不能是您的网格。具体来说,您是说要到达内部障碍物,对撞机必须

  1. 成为网格
  2. 不是网格

同时,我敢肯定,你会说这永远不会发生。相反,您想要的是一种使用Collider.OnCollisionEnter(Collision)来告诉对象何时开始接触网格的方法,并在发生时启动秒表。然后,您想使用Collider.OnCollisionExit(Collision)来告诉对象何时停止接触网格,并在发生这种情况时停止秒表。因此,以某种形式,您将拥有类似的东西,

/* ... */
void OnCollisionEnter(Collision collision) {
    if (collision.gameObject.name == "GridHolder") {
        stopwatch.Start();
        Debug.Log("In area");
    }
}

void OnCollisionExit(Collision collision) {
    if (collision.gameObject.name == "GridHolder") {
        stopwatch.Stop();
        Debug.Log("Left area");
        Debug.LogFormat("Time elapsed: {0}",stopwatch.Elapsed);
    }
}
/* ... */

如果您想知道何时进入/离开某个区域而不是开始/停止触摸网格,可以使用triggers instead的对撞机,但前提是相同的。 / p>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-