SAIMA/Assets//脚本/CameraManager.cs
Roman e3e11e2556 任务:编写玩法框架
1.制作障碍系统

(1.制作几种类型的障碍物的预制体
((*.编写障碍物基类,以下几种均继承自基类,含碰撞体,RememberY(生成障碍物时该有多大的Y)
((1.矮障碍,仅碰撞体
((2.高障碍,仅碰撞体
((3.可冲破障碍
(((1.除基本碰撞体外,额外包含一个触发器,比碰撞体先检测到马,同时获取马的x速度,大于阈值则给障碍做破碎,用马的力度决定破碎力,关闭碎块和马的碰撞
(((*.导入某2D破碎插件
((4.人马分离障碍
(((WAIT,需要等待人马分离系统先搭建

(2.编写障碍物生成系统
((1.每若干时间,生成一个随机一种障碍,若干的范围可控
(((1.设计协程,从预制体列表中随机出一种,并在计算好的位置实例化,随后等待范围内的若干时间,然后检查马的存活情况,若马仍存活,重新调用本协程
((2.生成的位置:x在相机右侧若干不变距离,y根据障碍物的不同而不同,需要计算保存。

(3.编写障碍物消亡系统
((1.每个障碍物和碎片都会在离开镜头后被删除
2022-07-30 00:47:44 +08:00

87 lines
1.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 相机管理员,主要控制游戏核心玩法中,相机向右移动和卡死死法的判定
/// </summary>
public class CameraManager : MonoBehaviour
{
/// <summary>
/// 相机移动的速度
/// </summary>
[Header("相机移动的速度")]
public float speed = 1f;
private Transform killWall;
void Start()
{
InitSth();
FindSth();
CreatSth();
}
void Update() {
//向右移动镜头
Move();
}
public void Death(GameController.Death deathInfo)
{
//相机不再运动
speed = 0;
}
void CreatSth()
{
killWall.gameObject.AddComponent<KillWall>();
}
void FindSth()
{
killWall = transform.Find("KillWall");
//killWall = GameObject.Find("KillWall").transform;
if(killWall == null) Debug.LogError("没找到KillWall,请检查相机是否有叫此名字的子物体");
}
void InitSth(){}
/// <summary>
/// 每帧调用,向右移动
/// </summary>
void Move(){
transform.position += (Vector3.right * speed * Time.deltaTime);
}
class KillWall : MonoBehaviour
{
void OnTriggerEnter2D(Collider2D other) {
if(other.tag == "HorseHead")
{
GameController.Death death;
death.deadReason = GameController.Death.DeadReason.Camera;
GameController.Instance.GameOver(death);
}
}
void OnTriggerExit2D(Collider2D other) {
Debug.Log("出去了一个:" + other.name);
switch(other.tag)
{
case "Fragment":
Destroy(other.gameObject);
break;
case "Obstacle":
Destroy(other.gameObject);
break;
}
}
}
}