unity3d ngui-TweenRotation翻牌动画

using UnityEngine;
using System.Collections;

public class TweenFlipCARDS : MonoBehaviour
{
    private float mfTime = 1.0f;
    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.onFinished.Add(new EventDelegate(PositiveEventDelegate));
        //mReverseTween.onFinished.Add(new EventDelegate(ReverseEventDelegate));
        //mPositiveTween.callWhenFinished = "PositiveEventDelegate";
        //mReverseTween.callWhenFinished = "ReverseEventDelegate";
       // a是正面,b是反面, 分为4个时间段 1.  a 从0转到90 ,b静止。2.a静止,b 从90-0. 3.a静止,b0-90. 4.a从90-0,b静止。
        StartCoroutine(waitShowReverseTime(mfTime));//显示一定的时间后再翻牌

    }
   IEnumerator waitShowReverseTime(float time)
    {
        yield return new WaitForSeconds(time);
        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 = PositiveEventDelegate;
        mReverseTween.onFinished = ReverseEventDelegate;

        ClickUIButton(positive);

    }
    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>
    public void PositiveEventDelegate(UITweener tween)
    {
        if (mNowDown == mPositiveTween.gameObject) mReverseTween.Play(true);
    }
    /// <summary>
    /// 复位回调
    /// </summary>
    public void ReverseEventDelegate(UITweener tween)
    {
        if (mNowDown == mReverseTween.gameObject) mPositiveTween.Play(false);
    }
}上述代码均来自http://www.xiaobao1993.com/486.html
时间: 2024-10-29 12:51:18

unity3d ngui-TweenRotation翻牌动画的相关文章

[Unity3D]Unity4新的动画系统Mecanim

Unity4.X中添加的新的动画系统取代了原来3.X的旧的动画系统,新动画系统Mecanim也是官方推荐的,使得我们写较少的代码来实现连续的动画效果. 效果图 Unity3.X中动画系统播放动画 使用播放play()或淡入淡出播放CrossFade() 例如: animation.Play("name"); animation.CrossFade("name"); 也可以做成队列动画,然后播放,例如: animation.PlayQueued("name&

[Unity3d][NGUI]两种思路解决AssetBundle的依赖关系.

接上文. 使用上文中的AssetBundle打包方式生成的文件包括了依赖关系中的文件. 一般的使用中并不会发现什么问题. 可是当配合NGUI的时候,使用dynamicFont时打包AssetBundle会将每一个组件使用的dynamicFont都分开打包进去. 导出函数请參考:导出资源 导出资源包时出现的问题: 如图: 在解决依赖关系上我使用过2种方案: 第一种是使用BuildPipeline中的PushAssetDependencies和PopAssetDependencies方法来解决依赖关

Unity3D游戏开发之动画模型导入

Unity3D游戏开发之动画模型导入 导入动画文件后,在工程(Porject)面板中选中,通过Inspector面板修改参数设置. 在项目视图中选中模型文件.如果想用旧版3.x的动画系统导入和编辑动画,请选择legacy选项.如果你有一个人性角色,比如,一个脑袋两条胳膊的两足动物,请选择Humanoid和'Create from this model',这样,一个完美匹配你角色骨骼关系的替身就可以被创建,或者你也可以选择其他预设好的替身. 如果你的角色不是人形物体,比如一个四足动物或者任何其它的

Unity3D NGUI自适应屏幕分辨率(2014/4/17更新)

原地址:http://blog.csdn.net/asd237241291/article/details/8126619 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 本文链接地址:Unity3D NGUI自适应屏幕分辨率 1.UIRoot:根据高度自适应屏幕分辨率. NGUI根目录的UIRoot组件自带了根据高度自适应分辨率的功能. Scaling Style属性可选择三种不同的缩放策略. PixelPerfect 完美像素:直接显示设定好的像素.当屏幕高度低于minimum

Unity3d + NGUI 的多分辨率适配

移动端的多机型适配 现在要介绍的是<锁链战记>这款游戏的适配方法,这种适配方法是UI是一个基础尺寸,背景是一个基础尺寸,背景比UI多出的部分是一些没有实际作用的部分,这样的适配方式避免了在iPhone5这样的小屏幕上镶边. 首先设定UIRoot的Scaling Style属性,如果是电脑现在FixedSize,如果要打包到移动端选择FixedSizeOnMobiles. 我这里是以960*640为UI基础尺寸所以这里填写640高. 下面编写脚本BaseAspect.cs using Unity

Unity3D NGUI学习(一)血条

这次来讲讲Unity3D NGUI这个插件的学习,这个插件是收费的,不过去网上可以下载得很多可用版本.用来做用户的交互UI,学习起来比较简单 第一步,导入NGUI包 http://pan.baidu.com/s/1mhKaoha 导入后Unity工具栏上面就会出现关于NGUI的选择了 第二步,开始看一些例子,分析一些例子,因为一般学插件就是下载后照着别人的例子去做可以学会了. 来看一个例子 这里还看一个上面的进度条的 当这个按钮包含几个脚本之后,就达到这样的效果 之后就能够通过实现脚本控制这个进

Unity3D NGUI图集切成图片

Unity3D NGUI图集切成图片 有的时候用NGUI做好了图集,那么原图就没有必要放到Unity3D中了,严重影响Unity3D的速度.但是突然右想把图片弄出来.当然NGUI是提供了图集中单个图片另存,但是如果图片太多,比较费时间,所以用python写了个切图片的工具代码如下: Python环境:2.7 测试通过,需要依赖Image库 NGUI版本:3.7 #coding:utf-8 #unity 图集裁剪成png #Author:Wiker Yong #Date:2015-07-08 im

Unity3D初学之2D动画制

作者:Alex Rose Unity最近宣布推出额外的2D游戏支持,添加了Box 2D物理和一个精灵管理器. 但这里还是有些技巧需要牢记在心.逐帧更改图像只是动画制作的冰山一角,若要让你的游戏出色运行,你还得使用转换和旋转等功能. 现在让我们先从基本技巧开始. 更改帧 如果你已经准备好了制作动画的纹理,你可能会使用SpriteManager脚本的付费版本,或者Unity的新版本.假设你使用的是2D位面和纹理.这就是一个低效率的方法,但如果你是在制作一个game jam的项目,你可能会想塞入一些可

Unity3D中播放序列帧动画

[狗刨学习网] class FrameAnimation { private float fps = 10.0f; private Rect drawPos; private float time = 0; private int currentIndex = 0; public void DrawFrameAnimation(Texture[] frameTex) { int length = frameTex.Length; GUI.DrawTexture(drawPos, frameTex