Files
Chef-s-Solitaire_Unity_IOS/Assets/Resources/Card/CardAnimation.cs
T
2026-06-18 14:04:23 +08:00

46 lines
1.2 KiB
C#

using UnityEngine;
using DG.Tweening;
public class CardAnimation : MonoBehaviour
{
public Transform axis; // 翻转轴(卡牌右边缘位置)
private bool isFront = true;
void Start()
{
PlayCardAnimation();
}
public void PlayCardAnimation()
{
Sequence seq = DOTween.Sequence();
float angle = isFront ? 180f : -180f;
Vector3 pivot = axis.position;
Vector3 offset = transform.position - pivot;
// 翻转 + y方向弧线
seq.Append(DOTween.To(
() => 0f,
a =>
{
// 旋转
Quaternion rot = Quaternion.AngleAxis(a, Vector3.up);
Vector3 newOffset = rot * offset;
// y方向弧线:从0升到峰值再回到0
float heightOffset = Mathf.Sin(a * Mathf.Deg2Rad) * 0.5f; // 0.5是弧线高度,可调
transform.position = pivot + newOffset + Vector3.up * heightOffset;
transform.rotation = rot;
},
angle,
1f // 动画时长
).SetEase(Ease.InOutQuad));
seq.OnComplete(() => {
isFront = !isFront;
});
}
}