using UnityEngine;
///
/// 火车
///
public class Train : MonoBehaviour
{
///
/// 火车对象
///
public GameObject trainObj;
///
/// 左点
///
public Transform leftPoint;
///
/// 右点
///
public Transform rightPoint;
///
/// 方向
///
private E_DirectionType e_DirectionType;
///
/// 刚体
///
public Rigidbody rb;
///
/// 是否死亡
///
private bool isDie;
///
/// 是否预警
///
private bool isEarlyWarning;
private void OnEnable()
{
isEarlyWarning = false;
isDie = false;
rb.useGravity = false;
rb.isKinematic = true;
}
private void OnDisable()
{
rb.velocity = Vector3.zero;
}
private void Update()
{
if (Vector3.Distance(Scenes.Instance.player.transform.position, this.transform.position) < 120&& !isDie)
{
if (!isEarlyWarning)
{
AudioManager.Instance.PlaySound(YooAssetManager.Instance.LoadAssetSync(PackagesName.GameData, "TrainPass"));
UIManager.Instance.GetUI().SetEarlyWarning(e_DirectionType);
isEarlyWarning = true;
}
trainObj.transform.Translate(trainObj.transform.forward * Scenes.Instance.gameScene.trainMoveSpeed * Time.deltaTime, Space.World);
}
}
///
/// 击飞
///
public void ShootFly(Transform transform)
{
if (isDie) return;
isDie = true;
rb.useGravity = true;
rb.isKinematic = false;
rb.AddForce((transform.position - this.transform.position).normalized * -100, ForceMode.Impulse);
rb.AddForce(Vector3.up * 20, ForceMode.Impulse);
rb.AddTorque(new Vector3(Random.Range(-180, 180), Random.Range(-180, 180), Random.Range(-180, 180)), ForceMode.Impulse);
}
///
/// 设置方向
///
public void SetDirection(E_DirectionType e_DirectionType)
{
this.e_DirectionType = e_DirectionType;
switch (e_DirectionType)
{
case E_DirectionType.Left:
trainObj.transform.position = leftPoint.position;
trainObj.transform.localEulerAngles = new Vector3(0, 180, 0);
break;
case E_DirectionType.Right:
trainObj.transform.position = rightPoint.position;
trainObj.transform.localEulerAngles = new Vector3(0, 0, 0);
break;
}
}
}