SAIMA/Assets//脚本/CameraManager.cs

93 lines
2.2 KiB
C#
Raw Normal View History

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;
case "Right" :
other.transform.parent.position += new Vector3(1,0,0) * 230f;
break;
}
if(other.gameObject.layer == LayerMask.NameToLayer("Fragment"))
Destroy(other.gameObject);
}
}
}