SAIMA/Assets//脚本/GameController.cs
Roman 9559cc8882 短学期Log
任务:替换和实装美术素材
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
2022-08-27 19:22:38 +08:00

85 lines
2.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}