Roman d61a850951 *合并了SAIPOVersion
任务:实装和完善部分音效,修复场景问题
1.增加走路时的脚步声音效
2.将Listener转移到玩家身上防止立体声出现问题
3.删除了跑步扬尘效果
4.增加了跑步时的脚步声音效
5.加快了跑步动画为原来的1.2倍,使之步频加快,看起来更加真实。
6.加快了导弹的下落速度,但是加长了导弹的下落前阴影提示时间
7.加强了阴影的闪烁幅度和宽度
8.提高了阴影的阿尔法值
9.提高了修完第一根电报线后生成导弹的高度,防止其漏个头出来
10.添加了修复电报线的音效
11.添加了打开任务书的音效
12.削弱地雷音效的3D特性,使得其爆炸时音量不至于过小
13.增加了爬坑音效
14.修复了电报机音效
15.降低了电报机音量
16.增加了跳下坑的音效
17.关闭了战场背景音的3D特性
18.调整了水流音效的影响范围和衰弱等级
19.降低了水流声的音量
(*:拾取投掷物的音效过于机械,建议更换
20.实装了投掷系统的音效(拾取物品、丢出物品、投掷物着地)
(*:着地音效太重了,而投掷物是很轻的石块
(*:投出音效太假了,像是什么棍子挥动的声音
2021-09-09 00:59:27 +08:00

100 lines
3.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MachineGunner : MonoBehaviour
{
//机枪手类,控制检测前方一片区域的敌人
// Start is called before the first frame update
private bool hasBeHit = false;//是否已被打中
private Animator person;
private Animator gun;//声明两个部件的动画组件
private Animator groundFireAnimation;
private Animator groundFireAnimation2;
private Animator gunFireAnimation;
[Tooltip("请拖入第二个上坑点的游戏物体,将在敌人被击晕后激活这个上坑点")]
public GameObject UpPoint2;
public AudioSource gunnerAudio;//获取机枪音效
[Tooltip("请拖入挡墙石头的碰撞体")]
public PolygonCollider2D stone;//
public GunLight gunLight;//枪口的光闪烁控制脚本
void Start()
{
person = transform.Find("敌人").GetComponent<Animator>();
gun = transform.Find("机枪").GetComponent<Animator>();
groundFireAnimation = transform.Find("地面枪光").GetComponent<Animator>();
groundFireAnimation2 = transform.Find("地面枪光2").GetComponent<Animator>();
gunFireAnimation = transform.Find("枪口枪光").GetComponent<Animator>();//找到部件的动画组件
}
// Update is called once per frame
void Update()
{
}
//触发器是敌人的前方监测区域,当玩家进入检测区域,机枪手进入射击状态,目前用变红表示
void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player" && !hasBeHit)//同时需要满足未被击中这个条件
{
//GetComponent<SpriteRenderer>().color = Color.red;
//播放开火动画
gunnerAudio.Play();
gunLight.isFire = true;
person.SetBool("IsFiring",true);
gun.SetBool("IsFiring",true);
groundFireAnimation.SetBool("IsFiring",true);
groundFireAnimation2.SetBool("IsFiring",true);
gunFireAnimation.SetBool("IsFiring",true);
}
}
//当玩家退出检测区域,停止射击状态,变为通常状态,现在用白色表示
void OnTriggerExit2D(Collider2D other)
{
if(other.tag == "Player")
{
//GetComponent<SpriteRenderer>().color = Color.white;
//关闭开火动画
person.SetBool("IsFiring",false);
gun.SetBool("IsFiring",false);
groundFireAnimation.SetBool("IsFiring",false);
groundFireAnimation2.SetBool("IsFiring",false);
gunFireAnimation.SetBool("IsFiring",false);
}
}
//碰撞体是机枪手自身的碰撞体,如果被投掷物砸中,则陷入昏迷状态,目前用绿色表示
void OnCollisionEnter2D(Collision2D other)
{
if(other.gameObject.tag == "投掷物")
{
gunLight.isFire = false;
gunnerAudio.Stop();//关闭音效
hasBeHit = true;//标记自身已被击中
//关闭开火动画
gun.SetBool("IsFiring",false);
groundFireAnimation.SetBool("IsFiring",false);
groundFireAnimation2.SetBool("IsFiring",false);
gunFireAnimation.SetBool("IsFiring",false);
//播放死亡动画
person.SetBool("IsDead",true);
//把上坑点2激活
UpPoint2.SetActive(true);
//关闭自身碰撞体
foreach(BoxCollider2D collider in GetComponents<BoxCollider2D>())
{
collider.enabled = false;
}
//关闭挡枪石头的碰撞体
stone.enabled = false;
}
}
public bool AreYouOK(){return !hasBeHit;}//返回机枪手状态是否良好,如果被打,则返回状态不好
}