You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.7 KiB
83 lines
2.7 KiB
3 years ago
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UI;
|
||
|
using HTC.UnityPlugin.Vive;
|
||
|
|
||
|
//治疗针的使用
|
||
|
//针在平常状态下会缓慢恢复数值,针在治疗状态下按住扳机使玩家缓慢恢复生命值
|
||
|
//如果不使用,20秒之后针的恢复量会补充完毕
|
||
|
//使用状态(按下状态)最多持续1秒,恢复30点生命值
|
||
|
|
||
|
public class CureNeedle : MonoBehaviour {
|
||
|
//是否在治疗状态
|
||
|
private bool isCure_;
|
||
|
//是否碰到左手
|
||
|
private bool isTouchLeftHand_;
|
||
|
//获取玩家类脚本
|
||
|
private Player playerScript;
|
||
|
private PlayerControl playerControlScript;
|
||
|
|
||
|
//数值显示
|
||
|
public Image remainHpImg;
|
||
|
public GameObject Light;
|
||
|
private bool isRayCast;
|
||
|
|
||
|
private RaycastHit NeedleRay;
|
||
|
// Use this for initialization
|
||
|
void Start () {
|
||
|
isTouchLeftHand_ = false;
|
||
|
isCure_ = false;
|
||
|
playerScript = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
|
||
|
playerControlScript = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerControl>();
|
||
|
}
|
||
|
|
||
|
// Update is called once per frame
|
||
|
void Update() {
|
||
|
if (isTouchLeftHand_) {
|
||
|
if (ViveInput.GetPressDown(HandRole.RightHand, ControllerButton.Trigger))
|
||
|
{
|
||
|
isCure_ = true;
|
||
|
}
|
||
|
}
|
||
|
if (ViveInput.GetPressUp(HandRole.RightHand, ControllerButton.Trigger)) {
|
||
|
isCure_ = false;
|
||
|
Light.SetActive(false);
|
||
|
}
|
||
|
if (isCure_ && playerControlScript.needleHpRemain > 0 && playerScript.hp < 100) {
|
||
|
playerControlScript.needleHpRemain = playerControlScript.needleHpRemain - 1;
|
||
|
playerScript.hp += 1;
|
||
|
}
|
||
|
remainHpImg.fillAmount = playerControlScript.needleHpRemain / 30f;
|
||
|
|
||
|
Debug.DrawRay(gameObject.transform.position - gameObject.transform.up * -0.025f -gameObject.transform.forward * 0.125f, gameObject.transform.forward * 0.2f, Color.red);
|
||
|
isRayCast = Physics.Raycast(gameObject.transform.position - gameObject.transform.up * -0.025f - gameObject.transform.forward * 0.125f, gameObject.transform.forward, out NeedleRay, 0.2f);
|
||
|
if (isRayCast)
|
||
|
{
|
||
|
if (NeedleRay.transform.tag == "leftHandCollider" && !isTouchLeftHand_)
|
||
|
{
|
||
|
isTouchLeftHand_ = true;
|
||
|
Light.SetActive(true);
|
||
|
}
|
||
|
}
|
||
|
else if(isTouchLeftHand_) {
|
||
|
isTouchLeftHand_ = false;
|
||
|
Light.SetActive(false);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
private void OnTriggerEnter(Collider other)
|
||
|
{
|
||
|
print(other.name);
|
||
|
if (other.name == "SphereCollider")
|
||
|
{
|
||
|
isTouchLeftHand_ = true;
|
||
|
Light.SetActive(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|