diff --git a/xiaofang/Assets/NatureManufacture Assets/Fire and Smoke Particles/Prefabs/VFX_Fire_01_Big.prefab b/xiaofang/Assets/NatureManufacture Assets/Fire and Smoke Particles/Prefabs/VFX_Fire_01_Big.prefab index 099f38b0..75a37cfe 100644 --- a/xiaofang/Assets/NatureManufacture Assets/Fire and Smoke Particles/Prefabs/VFX_Fire_01_Big.prefab +++ b/xiaofang/Assets/NatureManufacture Assets/Fire and Smoke Particles/Prefabs/VFX_Fire_01_Big.prefab @@ -38841,6 +38841,11 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: extinguishTime: 3 + fireHurt: 10 + dis: 0 + maxfiredis: 2 + ps: {fileID: 0} + us: {fileID: 0} --- !u!135 &5825030608256766515 SphereCollider: m_ObjectHideFlags: 0 @@ -38852,5 +38857,5 @@ SphereCollider: m_IsTrigger: 1 m_Enabled: 1 serializedVersion: 2 - m_Radius: 1.5 + m_Radius: 3 m_Center: {x: 0, y: 0, z: 0} diff --git a/xiaofang/Assets/Scenes/Tmap 1.unity b/xiaofang/Assets/Scenes/Tmap 1.unity index 2474e4a7..834b1194 100644 --- a/xiaofang/Assets/Scenes/Tmap 1.unity +++ b/xiaofang/Assets/Scenes/Tmap 1.unity @@ -2995,7 +2995,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: totalHp: 100 - currentHp: 100 + currentHp: 0 defend: 0 --- !u!1001 &383747424 PrefabInstance: @@ -13591,9 +13591,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: extinguishTime: 3 + fireHurt: 10 dis: 0 maxfiredis: 0 - playerObj: {fileID: 0} + ps: {fileID: 0} us: {fileID: 0} --- !u!135 &1629676688 SphereCollider: diff --git a/xiaofang/Assets/Script/Character/CharacterAin.cs b/xiaofang/Assets/Script/Character/CharacterAin.cs index 2788ef5b..4e3de4f4 100644 --- a/xiaofang/Assets/Script/Character/CharacterAin.cs +++ b/xiaofang/Assets/Script/Character/CharacterAin.cs @@ -177,9 +177,9 @@ public class CharacterAin : MonoBehaviour } } - IEnumerator jiutimer(float timer) - { - yield return new WaitForSeconds(timer); - } + //IEnumerator jiutimer(float timer) + //{ + // yield return new WaitForSeconds(timer); + //} } diff --git a/xiaofang/Assets/Script/Item/Fire.cs b/xiaofang/Assets/Script/Item/Fire.cs index dbb26f57..42950f13 100644 --- a/xiaofang/Assets/Script/Item/Fire.cs +++ b/xiaofang/Assets/Script/Item/Fire.cs @@ -13,13 +13,14 @@ public class Fire : MonoBehaviour private bool isPlayerInRange = false; // 检查玩家是否在范围内 private bool isExtinguishing = false; // 是否正在灭火 - public float extinguishTime = 3.0f; // 灭火所需的时间 + public float extinguishTime = 3f; // 灭火所需的时间 private float holdTime = 0f; // 按住按钮的计时 public float fireHurt = 10f; public float dis; public float maxfiredis = 2f; + public float firedis = 4f; public PlayerState ps; @@ -38,8 +39,10 @@ public class Fire : MonoBehaviour void Update() { + + HurtPeople(); + - HurtPeople(); if (us.currentItem.transform.name != "NoFire" || us.currentItem == null) { return; @@ -53,55 +56,84 @@ public class Fire : MonoBehaviour public void HurtPeople() { + dis = Vector3.Distance(GameObject.Find("player").transform.position, this.transform.position); - - timer += Time.deltaTime; - Debug.Log("进入扣血"); - if(timer > 1f) + + if(dis 1f) + { + //Debug.Log("================================================"); + ps.beHurt(fireHurt); + timer = 0; + } } - } public void MieFire() { + //// 检查玩家是否在范围内且按住灭火键 + //if (isPlayerInRange && Input.GetMouseButton(0)) + //{ + // // 禁用玩家控制器,防止玩家移动 + // if (!isExtinguishing) + // DisablePlayerControl(); - + // holdTime += Time.deltaTime; + // Debug.Log("灭火计时:" + holdTime); - - // 检查玩家是否在范围内且按住灭火键 + // if (holdTime >= extinguishTime && !isExtinguishing) + // { + // // 如果玩家按住键达到指定时间,停止火焰 + // StopFire(); + // isExtinguishing = true; // 防止重复触发灭火 + // } + //} + //else + //{ + // //Debug.Log("松开按键"); + // // 如果玩家松开按键或者离开范围,重置计时 + // holdTime = 0f; + // isExtinguishing = false; + // // 恢复玩家控制器 + // if (!Input.GetMouseButton(0)) EnablePlayerControl(); + //} if (isPlayerInRange && Input.GetMouseButton(0)) { - // 禁用玩家控制器,防止玩家移动 - if (!isExtinguishing) - DisablePlayerControl(); + // 计算玩家与火源的距离 + dis = Vector3.Distance(GameObject.Find("player").transform.position, this.transform.position); - holdTime += Time.deltaTime; - Debug.Log("灭火计时:" + holdTime); - - if (holdTime >= extinguishTime && !isExtinguishing) + // 如果玩家距离火源足够近且按下鼠标左键才触发灭火 + if (dis <= firedis) { - // 如果玩家按住键达到指定时间,停止火焰 - StopFire(); - isExtinguishing = true; // 防止重复触发灭火 + // 禁用玩家控制器,防止玩家移动 + if (!isExtinguishing) + DisablePlayerControl(); + + holdTime += Time.deltaTime; + Debug.Log("灭火计时:" + holdTime); + + if (holdTime >= extinguishTime && !isExtinguishing) + { + // 如果玩家按住键达到指定时间,停止火焰 + StopFire(); + isExtinguishing = true; // 防止重复触发灭火 + } } } else { - //Debug.Log("松开按键"); - // 如果玩家松开按键或者离开范围,重置计时 + // 如果松开按键或者离开范围,重置计时 holdTime = 0f; isExtinguishing = false; // 恢复玩家控制器 if (!Input.GetMouseButton(0)) EnablePlayerControl(); } - } @@ -125,17 +157,38 @@ public class Fire : MonoBehaviour // 当玩家进入火焰范围时触发 private void OnTriggerEnter(Collider other) { + //if (other.CompareTag("Player")) + //{ + // isPlayerInRange = true; // 玩家进入范围 + // characterControl = other.GetComponent(); + + //} if (other.CompareTag("Player")) { isPlayerInRange = true; // 玩家进入范围 characterControl = other.GetComponent(); - + + // 可以调整此处的触发范围 + float playerDistance = Vector3.Distance(other.transform.position, this.transform.position); + if (playerDistance <= maxfiredis) + { + isPlayerInRange = true; + } + else + { + isPlayerInRange = false; + } } } // 当玩家离开火焰范围时触发 private void OnTriggerExit(Collider other) { + //if (other.CompareTag("Player")) + //{ + // isPlayerInRange = false; // 玩家离开范围 + // characterControl = null; + //} if (other.CompareTag("Player")) { isPlayerInRange = false; // 玩家离开范围 diff --git a/xiaofang/Assets/Script/hylScripts/PlayerState.cs b/xiaofang/Assets/Script/hylScripts/PlayerState.cs index 954962bb..3e5f5483 100644 --- a/xiaofang/Assets/Script/hylScripts/PlayerState.cs +++ b/xiaofang/Assets/Script/hylScripts/PlayerState.cs @@ -27,8 +27,11 @@ public class PlayerState : MonoBehaviour public void beHurt(float hurt) { - currentHp -= hurt; - Debug.Log(currentHp); + if(currentHp >0) + { + currentHp -= hurt; + Debug.Log(currentHp); + } if(currentHp <= 0) { Debug.Log("你死了");