21.09.06 添加陷阱 计时器

在Unity游戏中,为陷阱添加了一个计时掉血的脚本,该脚本在FixedUpdate内运行以确保定时效果。然而,当角色停留在陷阱中时,仅扣血一次,原因是平面刚体组件进入休眠状态以节省资源。通过调试发现OnTriggerStay2D函数未按预期运行。为解决此问题,需要调整平面刚体的参数设置。
摘要由CSDN通过智能技术生成

添加陷阱,挂载一计时掉血脚本。因为是固定时间掉血,所以计时器写在FixedUpdate里就行

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Damagable : MonoBehaviour
{	bool flag;//陷阱开关
	private float damageCD = 1f;
	private float damageCDLeftTime;

    // Start is called before the first frame update

    void Start()
    {
        flag = true;//默认冷却完毕
        damageCDLeftTime = damageCD;
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    void FixedUpdate(){
    	//Debug.Log(damageCDLeftTime);
    	if(!flag){
    		damageCDLeftTime -= Time.deltaTime;
    		//Debug.Log(damageCDLeftTime + "   " + flag);
    		if(damageCDLeftTime <= 0){
    			flag = true;
    			damageCDLeftTime = damageCD;
    		}
    	}
    }

    void OnTriggerStay2D(Collider2D other){
    	//Debug.Log("update");
    	PlayerControl pc = other.GetComponent<PlayerControl>();//检测碰撞物体是否挂载了PlayerController脚本,有的话就是玩家了
    	if(pc != null && flag){
    		pc.ChangeHealth(-1);
    		flag = false;
    		damageCDLeftTime = damageCD;
    		}
    	}
    }

然后人物在陷阱里固定不动时,只会扣一次血,debug发现OntriggerStay2D函数没在运行,是平面刚体组件休眠节省资源的原因,我们需要调整一下参数:参考

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值