You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
215 lines
6.5 KiB
215 lines
6.5 KiB
11 months ago
|
using DG.Tweening;
|
||
|
using System.Collections;
|
||
|
using UnityEngine;
|
||
|
/// <summary>
|
||
|
/// 云梯车控制
|
||
|
/// </summary>
|
||
|
public class YunTiCheController : ElevatingController
|
||
|
{
|
||
|
public GameObject part8;
|
||
|
protected Vector3 part8Rot;
|
||
|
protected Vector3 part8Pos;
|
||
|
|
||
|
public override void InitData()
|
||
|
{
|
||
|
base.InitData();
|
||
|
part8 = transform.Find("Scene/Body/Base/Bi1/Bi2/Bi3/Bi4/Bi5/Bi6/Bi7").gameObject;
|
||
|
}
|
||
|
protected override void Init()
|
||
|
{
|
||
|
//StartCoroutine(OnAnimationPlay());
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 实例化时主臂展开
|
||
|
/// </summary>
|
||
|
/// <returns></returns>
|
||
|
private IEnumerator OnAnimationPlay()
|
||
|
{
|
||
|
yield return new WaitForSeconds(1f);
|
||
|
part2.transform.DORotate(new Vector3(-30f, 0f, 0f), 1f);
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 获取初始状态数据
|
||
|
/// </summary>
|
||
|
protected override void GetOriginalTransform()
|
||
|
{
|
||
|
base.GetOriginalTransform();
|
||
|
|
||
|
part8Pos = part8.transform.localPosition;
|
||
|
part8Rot = part8.transform.localEulerAngles;
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 主臂控制
|
||
|
/// </summary>
|
||
|
protected override void MainArmControl()
|
||
|
{
|
||
|
base.MainArmControl();
|
||
|
|
||
|
if (ctrlDown && Input.GetKey(PowerManager.Instance.up))
|
||
|
{
|
||
|
if (!firstFull)
|
||
|
{
|
||
|
float z = part3.transform.localPosition.z;
|
||
|
if (z > 15)
|
||
|
{
|
||
|
firstFull = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
firstZero = false;
|
||
|
|
||
|
part3.transform.localPosition = new Vector3(part3Pos.x, part3Pos.y, z + Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
else if (firstFull && !secondFull)
|
||
|
{
|
||
|
float z = part4.transform.localPosition.z;
|
||
|
if (z > 15)
|
||
|
{
|
||
|
secondFull = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
secondZero = false;
|
||
|
part4.transform.localPosition = new Vector3(part4Pos.x, part4Pos.y, z + Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
}
|
||
|
else if (firstFull && secondFull && !thirdFull)
|
||
|
{
|
||
|
float z = part5.transform.localPosition.z;
|
||
|
if (z > 15)
|
||
|
{
|
||
|
thirdFull = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
thirdZero = false;
|
||
|
part5.transform.localPosition = new Vector3(part5Pos.x, part5Pos.y, z + Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
}
|
||
|
else if (firstFull && secondFull && thirdFull && !fourthFull)
|
||
|
{
|
||
|
float z = part6.transform.localPosition.z;
|
||
|
if (z > 15)
|
||
|
{
|
||
|
fourthFull = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
fourthZero = false;
|
||
|
part6.transform.localPosition = new Vector3(part6Pos.x, part6Pos.y, z + Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
}
|
||
|
else if (firstFull && secondFull && thirdFull && fourthFull && !fifthFull)
|
||
|
{
|
||
|
float z = part7.transform.localPosition.z;
|
||
|
if (z > 15)
|
||
|
{
|
||
|
fifthFull = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
fifthZero = false;
|
||
|
part7.transform.localPosition = new Vector3(part7Pos.x, part7Pos.y, z + Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
else if (ctrlDown && Input.GetKey(PowerManager.Instance.down))
|
||
|
{
|
||
|
if (!fifthZero)
|
||
|
{
|
||
|
float z = part7.transform.localPosition.z;
|
||
|
if (z < 0)
|
||
|
{
|
||
|
fifthZero = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
fifthFull = false;
|
||
|
part7.transform.localPosition = new Vector3(part7Pos.x, part7Pos.y, z - Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
}
|
||
|
else if (fifthZero && !fourthZero)
|
||
|
{
|
||
|
float z = part6.transform.localPosition.z;
|
||
|
if (z < 0)
|
||
|
{
|
||
|
fourthZero = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
fourthFull = false;
|
||
|
part6.transform.localPosition = new Vector3(part6Pos.x, part6Pos.y, z - Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
else if (fifthZero && fourthZero && !thirdZero)
|
||
|
{
|
||
|
float z = part5.transform.localPosition.z;
|
||
|
if (z < 0)
|
||
|
{
|
||
|
thirdZero = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
thirdFull = false;
|
||
|
part5.transform.localPosition = new Vector3(part5Pos.x, part5Pos.y, z - Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
if (fifthZero && fourthZero && thirdZero && !secondZero)
|
||
|
{
|
||
|
float z = part4.transform.localPosition.z;
|
||
|
if (z < 0)
|
||
|
{
|
||
|
secondZero = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
secondFull = false;
|
||
|
part4.transform.localPosition = new Vector3(part4Pos.x, part4Pos.y, z - Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
else if (fifthZero && fourthZero && thirdZero && secondZero && !firstZero)
|
||
|
{
|
||
|
float z = part3.transform.localPosition.z;
|
||
|
if (z < 0)
|
||
|
{
|
||
|
firstZero = true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
firstFull = false;
|
||
|
part3.transform.localPosition = new Vector3(part3Pos.x, part3Pos.y, z - Time.deltaTime * zSpeed);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>
|
||
|
/// 平台旋转控制
|
||
|
/// </summary>
|
||
|
protected override void PlatformControl()
|
||
|
{
|
||
|
//z轴相对x轴弧度
|
||
|
var radian = Vector3.Dot(part8.transform.forward, Vector3.up);
|
||
|
//z轴相对x轴角度
|
||
|
var angle = Mathf.Rad2Deg * radian;
|
||
|
//平台一直水平
|
||
|
part8.transform.Rotate(angle, 0, 0);
|
||
|
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 重置变换
|
||
|
/// </summary>
|
||
|
protected override void OnReset()
|
||
|
{
|
||
|
base.OnReset();
|
||
|
part8.transform.localPosition = part8Pos;
|
||
|
part8.transform.localEulerAngles = part8Rot;
|
||
|
}
|
||
|
}
|