Roman ad1ca13fee 任务:实装和完善部分音效,修复场景问题
1.修复文字提示在其他幕也会出现的问题
2.给任务书界面加上退出按钮提示
3.减少导弹下落时间,如果太长,会导致玩家被巨石堵住,随后不明不白就被炸死
4.实装首次遇见投掷系统时的按键提示
5.替换第一关的云
6.修复第二关无法和电报机互动的问题
7.增加了第一关云层的视差
8.增加了场景部分美术素材的灰度,营造阴天的感觉
9.增加功能:当玩家走到能互动的东西附近时,头顶飘一个【F/X】的按键提示
10.将修电报线动作的过度做得更加平滑
11.修改碉堡动画,解决一部分子弹的穿模问题
12.将机枪手处的投掷物堆改为火堆
(*做不到让火把跟随手部,果咩QAQ

(*:第二关的炮火已经越来越好了,但是目前只有炮火,晚上肯定也会开枪吧?希望增加一些随机快速闪烁的光源表示晚上的枪。
(*:建议把倒地后的机枪手也加上调查对话

xx:人声问题请待定,加上音乐后好像又不是很违和了
(*:碉堡警告音效系统做完了,但是人声感觉上非常奇怪,建议修改
(*:敌人被石头吸引系统实装完成,但是很突兀,建议还是不要出现语言了

(*:建议更换【序章-家中】的远处的天空,并加上视差
(*:建议增加机枪手处石堆被击动画,可以是抖动,也可以是扬起一些灰尘之类的
(*:建议在序章家中第一次与父亲的对话中加入对电报机制的讲解

接下来的任务:

3.实装第二关最后追逐关卡
4.制作开始界面
5.制作Thanks 4 Play
6.电报系统、打完划掉、显示翻译数字序列
7.实装死亡和自动重新开始
2021-09-14 02:01:25 +08:00

131 lines
4.9 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;//枪口的光闪烁控制脚本
[Tooltip("拖入老兵旁边的投掷物堆")]
public BoxCollider2D heap;
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;
//关闭投掷物堆的触发器
heap.enabled = false;
}
}
//由于机枪手这里大改,必须重新写底层代码了。这里是炸弹引爆后的环节
public void BoomerHasBoom()
{
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;
//关闭投掷物堆的触发器
heap.enabled = false;
}
public bool AreYouOK(){return !hasBeHit;}//返回机枪手状态是否良好,如果被打,则返回状态不好
}