VR模拟枪支打靶,消灭鬼怪,换弹以及上弦等等硬核枪支操作。 使用HTCVive设备,开启SteamVR进行游玩。
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.
 
 
 
 
 

62 lines
2.0 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//盾牌,可以抵挡一次敌人的攻击,会消耗一次层数
//普通的敌人会停在原地,并准备下一次攻击(有一定的硬直时间)
public class LightShield : MonoBehaviour {
//最大层数
public int maxLayer_;
//当前层数
public int remainLayer_;
//层级对应盾牌对象
public GameObject[] LayerObjs_;
//获取玩家控制类
private PlayerControl playerControl_;
public Image shieldRecoverImg;
public bool isRecovering;
public ParticleSystem breakEffect;
//持盾状态下盾牌被攻击
public void shieldHit() {
if (remainLayer_ > 1) {
remainLayer_ -= 1;
LayerObjs_[remainLayer_].SetActive(false);
}
else {
remainLayer_ -= 1;
LayerObjs_[remainLayer_].SetActive(false);
gameObject.GetComponent<BoxCollider>().enabled = false;
breakEffect.Play();
}
}
void Start()
{
playerControl_ = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerControl>();
isRecovering = false;
}
//玩家在盾牌受到损伤后,会渐渐恢复
void Update()
{
if (remainLayer_ < maxLayer_ && !isRecovering) {
isRecovering = true;
playerControl_.startRecoverShield();
}
shieldRecoverImg.fillAmount = playerControl_.shieldRecover / 30f;
if (playerControl_.shieldRecover == 30) {
LayerObjs_[remainLayer_].SetActive(true);
remainLayer_ += 1;
if (!gameObject.GetComponent<BoxCollider>().enabled) {
gameObject.GetComponent<BoxCollider>().enabled = true;
}
playerControl_.shieldRecover = 0;
shieldRecoverImg.fillAmount = 0;
playerControl_.stopRecoverShield();
isRecovering = false;
breakEffect.Play();
}
}
}