消防栓重构

This commit is contained in:
杨号敬 2024-12-27 17:43:27 +08:00
parent 7dacbff46c
commit e1eca313c7
9 changed files with 234 additions and 1455 deletions

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@ public class Skill_Pick : MonoBehaviour
public Animator CharacterAnimator;
public Transform player;
public XFS xfs;
private Transform rightHand, leftHand;
@ -59,14 +59,17 @@ public class Skill_Pick : MonoBehaviour
// 禁用物品的碰撞体,防止它与玩家或其他物体碰撞
itemCollider.enabled = false;
if (item.transform.name == "gun")
{
xfs = item.GetComponent<watergun>().Xfs;
}
// 将物品设置为玩家手部的子对象,并调整其位置和旋转
item.transform.SetParent(rightHand, true); // false表示保持物品的世界旋转和位置
item.transform.localPosition = relativePosition; // 假设玩家手中有一个默认的持物位置
item.transform.localRotation = Quaternion.Euler(relativeRotation); // 重置旋转
Destroy(item.GetComponent<Rigidbody>());
Debug.Log("^^^^^^^^^^^^^^^^^^^^^^^^^");
// 更新当前持有的物品
return item;
@ -98,7 +101,10 @@ public class Skill_Pick : MonoBehaviour
{
itemCollider.enabled = true;
}
if (currentItem.transform.name == "gun")
{
xfs = null;
}
currentItem.AddComponent<Rigidbody>();
// 将物品放置在玩家当前位置的地面上

View File

@ -37,6 +37,10 @@ public class Skill_watering : MonoBehaviour
{
currentItem.GetComponent<NoFire>().StopFire();
}
if (currentItem.GetComponent<watergun>() != null)
{
currentItem.GetComponent<watergun>().water.SetActive(false);
}
}
public void StopWateringAnim( )
{
@ -72,9 +76,9 @@ public class Skill_watering : MonoBehaviour
currentItem.GetComponent<NoFire>().StartFire();
}
if (currentItem.gameObject.name == "gun")
if (currentItem.GetComponent<watergun>() != null)
{
XFS.instance.water.SetActive(true);
currentItem.GetComponent<watergun>().water.SetActive(true);
}
}
}

View File

@ -18,7 +18,7 @@ public class UseSkill : MonoBehaviour
// 玩家手中当前持有的物品
//[HideInInspector]
public GameObject currentItem = null;
public XFS Xfs;
public Skill_Pick _skill_Pick;
public Skill_Jump _skill_Jump;
public Skill_watering _skill_Watering;
@ -44,8 +44,8 @@ public class UseSkill : MonoBehaviour
{
if(currentItem.gameObject.name=="gun")
{
float dis= Vector3.Distance(GameObject.Find("player").transform.position, XFS.instance.transform.position);
if (dis >= 30f)
float dis= Vector3.Distance(GameObject.Find("player").transform.position, Xfs.gameObject.transform.position);
if (dis >= 20f)
{
Drop();
@ -63,7 +63,7 @@ public class UseSkill : MonoBehaviour
currentItem = null;
}
currentItem = _skill_Pick.Pick();
Xfs= _skill_Pick.xfs;
if (currentItem.transform.name == "NoFire")
{
currentItem.transform.Rotate(180f, -80f, -30f);
@ -89,6 +89,7 @@ public class UseSkill : MonoBehaviour
}
if (currentItem.transform.name == "gun")
{
currentItem.transform.rotation = new Quaternion(61.7036781f, 186.325302f, 348.049622f, 0);
}
}
@ -96,7 +97,7 @@ public class UseSkill : MonoBehaviour
public void Drop()
{
currentItem = _skill_Pick.Drop(currentItem);
Xfs = null;
}
//拾取
void Skill_Pick()
@ -109,13 +110,11 @@ public class UseSkill : MonoBehaviour
if(currentItem.transform.name == "NoFire") { currentItem.transform.Rotate(180f, -80f, -30f);
}
if (currentItem.transform.name == "gun") { currentItem.transform.rotation = new Quaternion(61.7036781f, 186.325302f, 348.049622f, 0);
if (currentItem.transform.name == "gun") {
currentItem.transform.rotation = new Quaternion(61.7036781f, 186.325302f, 348.049622f, 0);
Xfs = null;
}
if (Input.GetKeyDown(KeyCode.Q))
{
currentItem = _skill_Pick.Drop(currentItem);
}
}

View File

@ -12,7 +12,7 @@ public enum Firestate
public class Fire : MonoBehaviour
{
private bool isPlayerInRange = false; // 检查玩家是否在范围内
public bool isPlayerInRange = false; // 检查玩家是否在范围内
private bool isExtinguishing = false; // 是否正在灭火
public float extinguishTime = 3f; // 灭火所需的时间
private float holdTime = 0f; // 按住按钮的计时
@ -45,10 +45,7 @@ public class Fire : MonoBehaviour
HurtPeople();
if (XFS.instance.IShavewater)
{
MieFire();
}
if (UseSkill == null)
{
@ -58,8 +55,8 @@ public class Fire : MonoBehaviour
{
return;
}
else if(UseSkill.currentItem.transform.name != "NoFire")
{
else if(UseSkill.currentItem.transform.name != "NoFire" && UseSkill.currentItem.transform.name!="gun")
{
return;
}
MieFire();
@ -114,6 +111,7 @@ public class Fire : MonoBehaviour
// // 恢复玩家控制器
// if (!Input.GetMouseButton(0)) EnablePlayerControl();
//}
Debug.Log(11111111);
if (isPlayerInRange&& UseSkill.IsWater)
{
// 计算玩家与火源的距离
@ -135,10 +133,6 @@ public class Fire : MonoBehaviour
// 如果玩家按住键达到指定时间,停止火焰
StopFire();
isExtinguishing = true; // 防止重复触发灭火
if (XFS.instance.IShavewater)
{
XFS.instance.water.SetActive(false);
}
}
}

View File

@ -6,6 +6,8 @@ public class NoFire : MonoBehaviour
{
//ÅçÉäµã
private GameObject MuzzlePos;
public bool isuse = false;
// Start is called before the first frame update
void Start()
{
@ -26,10 +28,12 @@ public class NoFire : MonoBehaviour
public void StartFire()
{
MuzzlePos.SetActive(true);
isuse=true;
}
public void StopFire()
{
MuzzlePos.SetActive(false);
isuse=false;
}
}

View File

@ -5,7 +5,7 @@ using UnityEngine.UI;
public class XFS : MonoBehaviour
{
public static XFS instance;
// Start is called before the first frame update
public Button ConnectGun;
public Button ConnectFa;
@ -22,7 +22,7 @@ public class XFS : MonoBehaviour
void Start()
{
ShuiguanGameObject.SetActive(false);
instance =this;
UseSkill.Xfs = this;
ConnectGun.onClick.AddListener((() =>
{
PLayerLook();
@ -62,14 +62,15 @@ public class XFS : MonoBehaviour
public void openFa()
{
water = Instantiate(firewater);
UseSkill.Initgun();
water = Instantiate(firewater);
water.transform.SetParent(Gun.transform);
water.transform.localPosition = new Vector3(0, 0, 0);
water.transform.localRotation = new Quaternion(0, 180, 0, 0);
CharacterControl.enabled = true;
water.SetActive(false);
IShavewater = true;
UseSkill.Initgun();
Gun.GetComponent<watergun>().water=water;
CharacterControl.DragTheScreen.enabled = true;
}
// Update is called once per frame

View File

@ -0,0 +1,20 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class watergun : MonoBehaviour
{
public XFS Xfs;
public GameObject water;
// Start is called before the first frame update
void Start()
{
Xfs=this.transform.parent.GetComponent<XFS>();
}
// Update is called once per frame
void Update()
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9ee3f53d86720f249a148ad9823e0198
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: