Main/Assets/Code/Logic/LoopMoveScene/LoopMoveSceneScript.cs
2025-01-25 04:38:09 +08:00

87 lines
2.4 KiB
C#

using Thousandto.Code.Center;
using Thousandto.Core.Asset;
using System.Collections.Generic;
using UnityEngine;
namespace Thousandto.Code.Logic
{
//循环移动的场景,场景会一直循环移动
public class LoopMoveSceneScript : MonoBehaviour
{
#region//常量
const float MOVE_START_SPEED = 0f;
const float MOVE_ADD_SPEED = 5f;
const float MOVE_MAX_SPEED = 10f;
#endregion
#region//私有变量
private Transform _downTrans = null;
private Transform _upTrans = null;
private Vector3 _downOriPos = Vector3.zero;
private Vector3 _upOriPos = Vector3.zero;
private float _curSpeed = 0f;
private float _waitTime = 2f;
#endregion
#region//继承基类
private void Awake()
{
_downTrans = transform.Find("[far]/map016/MoveTa0");
_upTrans = transform.Find("[far]/map016/MoveTa1");
if(_downTrans != null && _upTrans != null)
{
_downOriPos = _downTrans.position;
_upOriPos = _upTrans.position;
}
}
private void OnEnable()
{
if(_downTrans != null && _upTrans != null)
{
_curSpeed = MOVE_START_SPEED;
_downTrans.position = _downOriPos;
_upTrans.position = _upOriPos;
_waitTime = 2f;
}
}
private void Update()
{
if(_downTrans == null || _upTrans == null)
{
return;
}
if(_waitTime > 0f)
{
_waitTime -= Time.deltaTime;
return;
}
if(_curSpeed < MOVE_MAX_SPEED)
{
_curSpeed += MOVE_ADD_SPEED * Time.deltaTime;
if(_curSpeed > MOVE_MAX_SPEED)
{
_curSpeed = MOVE_MAX_SPEED;
}
}
_downTrans.position += Vector3.down * _curSpeed * Time.deltaTime;
_upTrans.position += Vector3.down * _curSpeed * Time.deltaTime;
if(_upTrans.position.y <= _downOriPos.y)
{
//上面的移动到下面的位置,交换位置
var tmp = _upTrans;
_upTrans = _downTrans;
_downTrans = tmp;
_upTrans.position = _upOriPos;
}
}
#endregion
}
}