NGUI 翻牌效果

本文介绍如何利用NGUI创建翻牌效果。通过设置两个对象初始角度,点击时翻转指定角度,达到视觉上的翻牌动画。翻牌过程中内部显示内容始终保持可见。

效果图如下:

111

 

思路:两个对象。默认选中角度一个旋转角度为0 。一个为90。点击旋转 角度为0的至90度。然后回调。让90度的另外一张旋转至0度。既实现翻牌效果。同时两张内部的显示类型不受相互影响 

using UnityEngine;
using System.Collections;
public class TweenFlipCARDS : MonoBehaviour {
    public GameObject positive;
    public GameObject reverse;
    private TweenRotation mPositiveTween;
    private TweenRotation mReverseTween;
    /// <summary> 半圈时间 </summary>
    public float duration = 1;
    void Start()
    {
        mPositiveTween = positive.GetComponent<TweenRotation>();
        if (mPositiveTween == null)mPositiveTween = positive.AddComponent<TweenRotation>();
        mReverseTween = reverse.GetComponent<TweenRotation>();
        if (mReverseTween == null) mReverseTween = reverse.AddComponent<TweenRotation>();
        mPositiveTween.enabled = false;
        mReverseTween.enabled = false;
        reverse.gameObject.transform.localEulerAngles = new Vector3(0, 90, 0);
        mPositiveTween.from = Vector3.zero;
        mPositiveTween.to = new Vector3 (0, 90, 0);
        mPositiveTween.duration = duration;
        mReverseTween.from = new Vector3(0, 90, 0);
        mReverseTween.to = Vector3.zero;
        mReverseTween.duration = duration;
        UIEventListener listener = UIEventListener.Get(positive.gameObject);
        listener.onClick = ClickUIButton;
        listener = UIEventListener.Get(reverse.gameObject);
        listener.onClick = ClickUIButton;
        mPositiveTween.onFinished.Add(new EventDelegate(PositiveEventDelegate));
        mReverseTween.onFinished.Add(new EventDelegate(ReverseEventDelegate));
    }
    GameObject mNowDown;
    void ClickUIButton(GameObject click)
    {
        mNowDown = click;
        if(click == positive)
        {
            PlayPositive();
        }
        else if(click == reverse)
        {
            PlayReverse();
        }
    }
    /// <summary>
    /// 翻牌
    /// </summary>
    public void PlayPositive()
    {
        mPositiveTween.Play(true);
    }
    /// <summary>
    /// 复位
    /// </summary>
    public void PlayReverse()
    {
        mReverseTween.Play(false);
    }

    /// <summary>
    /// 翻牌回调
    /// </summary>
    void PositiveEventDelegate()
    {
        if (mNowDown == mPositiveTween.gameObject) mReverseTween.Play(true);
    }
    /// <summary>
    /// 复位回调
    /// </summary>
    void ReverseEventDelegate()
    {
        if (mNowDown == mReverseTween.gameObject) mPositiveTween.Play(false);
    }
}

直接将代码绑定在父物体上。下级两个GameObject即可。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值