SAIMA/Assets//脚本/BlackController.cs
Roman e6888a748d 任务:编写教程和开始场景
分析:分为五个阶段,每个阶段一屏宽。前四个阶段是教程阶段,分别仅放一种障碍(第一个无障碍)和提示,提示参照茶杯头教程关。
每个阶段间有明显间断、镜头固定,但当马通过该阶段的障碍后,镜头右移一个阶段。马不能倒退,相机左侧有空气墙。
到达最终阶段后,按流程点燃圣火进入游戏

设计:
1.搭建核心场景,放置障碍物。
DONE
2.设计教程及开始场景管理器
(1.控制相机,使马每通过一个阶段,相机运动到记录的位置
DONE
(2.给相机左侧添加空气墙
DONE
(3.管理器要明确记录此时玩家处于哪个阶段
DONE
(4.当玩家进入点燃圣火触发器,切断操控,等待动画结束或者一些信号,触发从右向左的渐变黑幕遮挡全屏,随后转场到新场景。
DONE

至此,基本逻辑完成,需要补充大量细节、替换大量美术素材。

修复问题:
1.人马分离障碍连续出现可能导致致命问题,修复使其不能连续出现
DONE
2.GamePlay中,远处的山需要补充运动逻辑
DONE
2022-08-26 18:11:05 +08:00

47 lines
1.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class BlackController : UnitySingleton<BlackController>
{
public float moveDuration = 0.5f;
public float waitDuration = 0.5f;
public bool AllBlack = false;
private void Start() {
DontDestroyOnLoad(transform.parent.gameObject);
}
private void Update() {
transform.parent.transform.position = Camera.main.transform.position + new Vector3(0,0,1f);
}
//呼出从左到右的黑幕
public void Trans(){
StartCoroutine(ComeInCoroutine());
}
private IEnumerator ComeInCoroutine(){
//移动黑幕遮住屏幕
transform.DOLocalMoveX(0f, moveDuration);
//等待移动结束,并等待预留的加载时间
yield return new WaitForSeconds(moveDuration);
AllBlack = true;
yield return new WaitForSeconds(waitDuration);
//此时屏幕全黑,并已等待完加载时间
//揭开黑幕
AllBlack = false;
transform.DOLocalMoveX(-170f, moveDuration);
//等待黑幕运动结束
yield return new WaitForSeconds(moveDuration);
//恢复黑幕位置
transform.localPosition = new Vector3(170f, 0f, 0);
}
}