using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 相机管理员,主要控制游戏核心玩法中,相机向右移动和卡死死法的判定
///
public class CameraManager : MonoBehaviour
{
///
/// 相机移动的速度
///
[Header("相机移动的速度")]
public float speed = 1f;
private Transform killWall;
private Transform mountain1;
private Transform mountain2;
public float mountain1Speed = 0.5f;
public float mountain2Speed = 0.8f;
void Start()
{
InitSth();
FindSth();
CreatSth();
}
void Update() {
//向右移动镜头
Move();
//移动远山
MoveMountain();
}
private void MoveMountain(){
mountain1.Translate(Vector3.left * mountain1Speed * Time.deltaTime);
mountain2.Translate(Vector3.left * mountain2Speed * Time.deltaTime);
if(mountain1.localPosition.x < -140) mountain1.localPosition = new Vector3(140, -6.8f, 1);
if(mountain2.localPosition.x < -140) mountain2.localPosition = new Vector3(140, -6.8f, 1);
}
public void Death(GameController.Death deathInfo)
{
//相机不再运动
speed = 0;
//远景不再运动
mountain1Speed = 0;
mountain2Speed = 0;
}
void CreatSth()
{
killWall.gameObject.AddComponent();
}
void FindSth()
{
killWall = transform.Find("KillWall");
//killWall = GameObject.Find("KillWall").transform;
if(killWall == null) Debug.LogError("没找到KillWall,请检查相机是否有叫此名字的子物体");
mountain1 = transform.Find("远景1");
mountain2 = transform.Find("远景2");
}
void InitSth(){}
///
/// 每帧调用,向右移动
///
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);
}
}
}