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 } }