using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using System;
public class TowerCrane : MonoBehaviour
{
[SerializeField] Transform _mainBody;
[SerializeField] Transform _roller01;
[SerializeField] Transform _roller02;
[SerializeField] Transform _upperBody;
[SerializeField] GameObject blockPre6M;
[SerializeField] GameObject End;
[SerializeField] GameObject End2;
private Vector3 orgPos;
private void Start()
{
orgPos = _upperBody.position;
}
float rollerSpeed = 0.05f;
Vector3 rollerDirect;
Tweener t = null;
public void RotateBody()
{
_mainBody.Rotate(Vector3.forward);
}
public void RotateBody01()
{
_mainBody.Rotate(-Vector3.forward);
}
private void Update()
{
End.transform.position = new Vector3(_roller01.transform.position.x, End.transform.position.y, End.transform.position.z);
End2.transform.position = new Vector3(_roller02.transform.position.x, End2.transform.position.y, End2.transform.position.z);
if (Input.GetKey(KeyCode.A))
{
if (Vector3.Distance(_roller01.position, _roller02.position) < 10f)
{
return;
}
rollerDirect = _roller01.up;
MoveRoller();
}
if (Input.GetKey(KeyCode.D))
{
if (Vector3.Distance(_roller01.position, _roller02.position) > 100f)
{
return;
}
rollerDirect = -_roller01.up;
MoveRoller();
}
if (Input.GetKey(KeyCode.R))
{
RotateBody();
}
if (Input.GetKey(KeyCode.T))
{
RotateBody01();
}
if (Input.GetKey(KeyCode.I))
{
Rise();
}
if (Input.GetKey(KeyCode.O))
{
GoDown();
}
}
private void MoveRoller()
{
_roller01.localPosition += rollerDirect * rollerSpeed;
_roller02.localPosition -= rollerDirect * rollerSpeed;
}
private void Rise()
{
if (t != null)
{
return;
}
t = _upperBody.DOMove(_upperBody.position + Vector3.up * 6, 1f);
Invoke("AddBlock",1f);
}
private void GoDown()
{
if (t != null)
{
return;
}
t = _upperBody.DOMove(_upperBody.position - Vector3.up * 6, 1f);
Invoke("DeleteBlock", 1f);
}
private void AddBlock()
{
Instantiate(blockPre6M, _upperBody).transform.position = blockPre6M.transform.position;
t = null;
}
private void DeleteBlock()
{
DestroyImmediate(_upperBody.transform.GetChild(_upperBody.childCount - 1).gameObject);
t = null;
}
public void UpTwoer()
{
for(int i = 0; i<0; i++)
{
_upperBody.position += Vector3.up * 6f;
Instantiate(blockPre6M, _upperBody).transform.position = blockPre6M.transform.position;
}
}
public void ResetTower()
{
_upperBody.position = orgPos;
for(int i = 0; i < 4; i++)
{
GameObject obj = GameObject.Find("BG_标准段");
if(obj != null)
{
DestroyImmediate(obj);
}
}
}
}