
任务:替换和实装美术素材 1.在教程场景布置图标和文字提示内容 DONE 2.制作GamePlay中背景元素的动画并实装 DONE 3.替换拆迁障碍物美术素材 DONE 任务:实装音乐和音效 1.为两个场景添加音乐,并且在GamePlay场景不重开音乐。 DONE 2.实装人摔地音效 DONE 3.实装人跑动音效 效果不好 DONE 4.实装人马分离音效 DONE *.补充实装人降落到马上的音效 DONE 5.实装创烂障碍物音效 DONE 6.实装圣火点燃音效 DONE 7.实装马磕磕碰碰音效 DONE 8.实装马似音效 DONE 9.实装马着地音效 DONE 10.实装马起跳音效 DONE 11.实装马蹄点地音效 效果不好 DONE 任务:实装特效 1.实装后处理 DONE 2.实装日夜更替 DONE 3.实装树叶飘落 DONE 4.实装圣火粒子 效果不好 DONE 5.实装破碎灰尘 效果不好 DONE 6.实装马蹄灰尘 DONE 7.实装红黑闪特效 DONE 任务:完善没写的零散逻辑 1.在教程场景,若人马分离障碍处没接到人,过一个转场然后复位人和马 **:仍然存在问题,当如此,人的动画失效。这个问题现在不好修,等待人的死亡动画实装后再修 已修复 DONE 2.在教程场景,点燃圣火仅有进入触发器后加载转场然后转移场景的功能,没有点燃圣火的过程,现补充其逻辑 DONE 3.开发GamePlay距离记录和重开系统 DONE 4.策划要在点燃圣火时镜头放大,体现标题感 URP相机不太好做 ABANDON 5.人的死亡动画逻辑之前没做 DONE 任务:测试并修复Bug DONE 修复Bug 1.在教程场景,可破坏障碍物的碎片的层级不对,创烂瞬间会有层级突变的问题。在GamePlay层级,也出现了这个问题。 已修复 DONE 2.现在的高障碍实在太高了,基本有80%以上的概率导致马翻,应该调低障碍物、或者调大马的跳跃力度。 DONE 3.跑步动画和跑步音效完全对不上 加快跑步动画 DONE 4.原爆破给力范围太大,会导致旧的碎片也被波及 已修复 DONE
85 lines
2.9 KiB
C#
85 lines
2.9 KiB
C#
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using UnityEngine;
|
||
using UnityEngine.InputSystem;
|
||
using UnityEngine.UI;
|
||
using DG.Tweening;
|
||
using TMPro;
|
||
|
||
public class GameController : UnitySingleton<GameController>
|
||
{
|
||
private float cameraTransDistance = 0;
|
||
private float cameraStartX;
|
||
|
||
public struct Death{
|
||
public enum DeadReason { Camera , PersonFall }
|
||
public DeadReason deadReason;
|
||
}
|
||
|
||
private Horse horse;
|
||
private CameraManager cameraManager;
|
||
private Person person;
|
||
public bool hasGameOver = false;
|
||
|
||
void Start(){
|
||
FindSth();
|
||
}
|
||
|
||
void Update(){
|
||
// //当同时按下左右扳机,触发重开,仅调试用
|
||
// if(Gamepad.current != null && Gamepad.current.leftTrigger.isPressed && Gamepad.current.rightTrigger.isPressed){
|
||
// UnityEngine.SceneManagement.SceneManager.LoadScene(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
|
||
// }
|
||
//如果已经游戏结束,并且按下手柄Y键,则重新开始游戏
|
||
if(hasGameOver && Gamepad.current != null && Gamepad.current.buttonNorth.isPressed){
|
||
StartCoroutine(RestartCoroutine());
|
||
//UnityEngine.SceneManagement.SceneManager.LoadScene(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
|
||
}
|
||
}
|
||
|
||
private IEnumerator RestartCoroutine(){
|
||
//仅防止多次触发
|
||
hasGameOver = false;
|
||
//首先呼出黑幕
|
||
BlackController.Instance.Trans();
|
||
//等到屏幕全黑
|
||
yield return new WaitUntil(() => {return BlackController.Instance.AllBlack;});
|
||
//切换场景
|
||
UnityEngine.SceneManagement.SceneManager.LoadScene(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);
|
||
}
|
||
|
||
void FindSth(){
|
||
horse = FindObjectOfType<Horse>();
|
||
cameraManager = FindObjectOfType<CameraManager>();
|
||
person = FindObjectOfType<Person>();
|
||
cameraStartX = Camera.main.transform.position.x;
|
||
}
|
||
|
||
public void GameOver(Death deathInfo){
|
||
hasGameOver = true;
|
||
//触发马的死亡功能
|
||
horse.Death(deathInfo);
|
||
//触发人的死亡功能
|
||
person.Death(deathInfo);
|
||
//告诉相机马死了
|
||
cameraManager.Death(deathInfo);
|
||
StartCoroutine(UICoroutine());
|
||
}
|
||
|
||
public RectTransform restartUI;
|
||
public TextMeshProUGUI meter;
|
||
private IEnumerator UICoroutine(){
|
||
//计算相机移动距离
|
||
cameraTransDistance = Camera.main.transform.position.x - cameraStartX;
|
||
cameraTransDistance /= 5;
|
||
//设定UI分数显示为cameraTransDistance
|
||
//restartUI = GameObject.Find("重开").GetComponent<RectTransform>();
|
||
meter.text = ((int)cameraTransDistance).ToString();
|
||
//等待2秒钟
|
||
yield return new WaitForSeconds(2);
|
||
//UI进入页面
|
||
restartUI.DOLocalMoveX(0,1f);
|
||
}
|
||
|
||
}
|