2025-05-08 13:38:55 +08:00

29 lines
935 B
C#

#if PRIME_TWEEN_INSTALLED
using PrimeTween;
using UnityEngine;
namespace PrimeTweenDemo {
public class Road : Animatable {
[SerializeField] MeshRenderer roadModel;
[SerializeField] AnimationCurve ease;
float currentSpeed;
void Awake() {
_ = roadModel.material; // copy shared material
}
public override Sequence Animate(bool isAnimating) {
var currentSpeedTween = Tween.Custom(this, currentSpeed, isAnimating ? 0.3f : 0, 1, (_this, val) => _this.currentSpeed = val);
var sequence = Sequence.Create(currentSpeedTween);
if (isAnimating) {
sequence.Group(Tween.LocalPositionY(transform, 0, -0.5f, 0.7f, ease));
}
return sequence;
}
void Update() {
roadModel.material.mainTextureOffset += new Vector2(-1f, 1f) * currentSpeed * Time.deltaTime;
}
}
}
#endif