level 9
求大佬指教,unity到底怎样实现进进入范围后每秒敌人减血次执行完完就结束?在ontriggerenter和ontriggerstay里用for循环执行太快了,用计时就不执行减血了……百度了很多都只讲单次攻击……大佬们可以代码演示一下么
2020年06月10日 23点06分
1
level 10
1.Stay快是因为,U3d物理系统可能一帧多次
2.float _time = 1f;//每次enter置为1
OnTriggerStay(collider col)
{
_time-=Time.fixedTime;
if(_time<=0)
{
//执行扣血
_time=1;
}
}
3:用Trigger做就这个思路,有问题再调
2020年06月11日 06点06分
3
Time.fixedTime改为Time.fixedDeltatime,手打的,误了
2020年06月11日 06点06分
@Cakeing 谢啦,我之所以用这个方法不成功是因为时间判断条件少了一个……根本就没等于0过所以一直没执行……
2020年06月11日 12点06分
deltaTime和fixedDeltatime啥区别
2023年09月28日 13点09分
@灰灰爱香香 一个是帧速率,受硬件影响,比如配置差可能只有几帧,这个时间就长,fixed是物理刷新速率,一般是一个定值,他可能一帧执行多次
2023年09月28日 14点09分
level 1
简单点的化,协程可以用 WaitForSeconds
楼上用 Time.fixedTime 或 Time.deltaTime 可以做的更细致些。
2020年06月13日 13点06分
5
level 5
。。。。你可以分3个部分模块Trigger ,Logic,TriggerManager。Trigger接口负责提供触发的函数,Logic抽象类负责触发的时候的逻辑。TriggerManager负责控制连接Trigger和Logic。你可以在继承TriggerManager抽象里面触发以后,利用协程(或者Update)去判断是否触发或者离开,触发的话加入一个池。准备一个协程每隔一段时间对池里面的对象执行一次logic。具体参数自己设计。这样子更麻烦,但是这样子低耦合,可以实现更多功能,方便后期维护。
2020年06月16日 11点06分
7