using DG.Tweening; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; using UnityEngine.UI; public class snailRider : MonoBehaviour { public Image palye; public GameObject obj; public List LightSprite; public GameObject startingPoint; public GameObject end; public bool is_victory = false;//这只蜗牛是否在本回合比赛胜利 public bool is_die = false;//这个蜗牛死了没 float offset = 0; public Sequence mySequence = DOTween.Sequence(); // Start is called before the first frame update async void Start() { //startMove(); while (true) { if (LightSprite == null) return; foreach (Sprite sprite in LightSprite) { if (palye != null) { palye.sprite = sprite; await Task.Delay(50); } } } } private void OnDestroy() { LightSprite = null; } public void killsnail() { obj.SetActive(!is_die); } public void startMove() { //palye.enabled = !is_die; if (!is_die) { float suiji = 0; if (is_victory) { suiji = UnityEngine.Random.Range(-2f,-1f); } else { suiji = UnityEngine.Random.Range(-1f, 0f); } mySequence.Append(transform.DOMove(startingPoint.transform.position, 0.01f)) .Append(transform.DOMove(end.transform.position, 4f + suiji)) ; mySequence.OnKill(()=> { AllManeger.instance.snailMoveNum++; }); } } public void returnStart() { Debug.Log(transform.name); Debug.Log(transform.position); mySequence.Kill(); // 停止并销毁动画 transform.position=startingPoint.transform.position; Debug.Log(startingPoint.transform.position); Debug.Log(transform.position); } private void Update() { offset = Mathf.Lerp(offset, 0, 1f * Time.deltaTime); obj.transform.localPosition = Vector3.Lerp(obj.transform.localPosition, new Vector3(offset, 0, 0), 1f * Time.deltaTime); } async void OnTriggerEnter2D(Collider2D other) { Destroy(other.gameObject); if (other.gameObject.GetComponent< snailRiderItem >().mode == snailRiderItem.Mode.accelerate) { offset = 500; } else { offset = -500; } } }