Roman 6c935a7d3f 任务:替换现有美术素材和动画、完善游戏的流程化
*:合并了SAIPOVersion
场景【第二关】
1.放置巡逻类敌人
*制作AC【巡逻敌人】
2.完善巡逻类敌人,具有以下特性:
(1.普通巡逻时,执行走路动画
(2.监测到玩家时,执行开枪动画
(3.给动画添加事件,开枪瞬间播放玩家死亡动画
(4.当听到石头声音,执行听见动画
(5.结束后让敌人冲向石头落地处
(6.到达石头落地处后,执行检查动画
(7.检查动画结束后,返回步行状态继续巡逻
3.布置了投掷物堆
4.布置了挡板,具有以下特性:
(1.当玩家位于挡板后,标记自身被遮挡,不会被敌人发现
(2.当玩家离开挡板后,标记自身未被遮挡,会被敌人发现
(3.修改敌人逻辑,当发现挡板后的玩家,无事发生,而当发现无遮挡的玩家,执行开枪和玩家死亡动画
5.解决了玩家转身后无法投掷的问题
6.放置了两个敌人
7.放置了两个挡板
8.布置营地
9.给桌子加上修理电报机系统
10.替换修理电报机界面UI美术素材
11.提高了修理台的转速
2021-09-03 16:03:44 +08:00

91 lines
3.4 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;//获取机枪音效
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;
//播放开火动画
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 == "投掷物")
{
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;
}
}
}
public bool AreYouOK(){return !hasBeHit;}//返回机枪手状态是否良好,如果被打,则返回状态不好
}