1.Dotween插件的基本操作

40 阅读1分钟

Dotween插件是一种快速,高效,完全类型安全的面向对象的动画引擎。我们可以通过AssetStore获取该插件,并在PackageManager中download、import。

案例:红色方块朝着绿色方块位置移动,发生碰撞,并产生碰撞效果。需要通过dotween控制方块的移动状态。移动状态分为移动、暂停移动、重启移动、移动动画的正放与倒放。

思路:

编辑器层面: 设置红色和绿色的方块碰撞器,并在移动的红色方块游戏物体上挂载rigidbody刚体组件。另外,为了产生符合物理引擎的碰撞效果,需要在绿色方块游戏物体上挂载rigidbody组件。

动画层面:主要涉及到Dotween插件的函数调用。

代码实现:

public class CubeMove : MonoBehaviour
{
    Vector3 AimPos;
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.S))
        {
            AimPos = GameObject.Find("Green").transform.position;
            //红色方块移动,并设置该移动动画名为“move”
            transform.DOMove(AimPos, 5).SetId<Tween>("move");
        }
        //暂停动画
        if (Input.GetKeyDown(KeyCode.P))
        {
            DOTween.Pause("move");
        }
        //继续播放动画,可以继续播放
        if (Input.GetKeyDown(KeyCode.O))
        {
            DOTween.Play("move"); 
        }
        //杀死动画,不能再播放
        if (Input.GetKeyDown(KeyCode.K))
        {
            DOTween.Kill("move");
        }
        //动画正放
        if (Input.GetKeyDown(KeyCode.R))
        {
            DOTween.PlayForward("move");
        }
        //动画倒放
        if (Input.GetKeyDown(KeyCode.T))
        {
            DOTween.PlayBackwards("move");
        }
    }
    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name.Equals("Green"))
        {
            Debug.LogError("红色方块在接触绿色方块");
        }
    }
    private void OnCollisionStay(Collision collision)
    {
        if (collision.gameObject.name.Equals("Green"))
        {
            Debug.LogError("红色方块和绿色方块接触停留");           
        }
    }
    private void OnCollisionExit(Collision collision)
    {
        if (collision.gameObject.name.Equals("Green"))
        {
            Debug.LogError("红色方块离开了绿色方块");
        }
    }
}