怎么在Unity3D中利用DoTween实现卡牌翻转效果-创新互联

这篇文章将为大家详细讲解有关怎么在Unity3D中利用DoTween实现卡牌翻转效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创新互联建站是一家集网站建设,南宫企业网站建设,南宫品牌网站建设,网站定制,南宫网站建设报价,网络营销,网络优化,南宫网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

关于DoTween

DoTween是一款十分强大且好用的动画效果插件,有免费版和收费版,免费版就可以满足大部分需求了,在Unity Assets Store里就可以下载,在本效果里就用了DoTween的旋转功能。

设计思路

创建一个空物体,空物体下有两个image对象,一个是正面,一个是背面。假设我们从正面开始,则初始状态下正面的旋转角度为(0,0,0) (0,0,0)(0,0,0),让背面的旋转角度为(0,90,0) (0,90,0)(0,90,0),这样背面就看不见了。
触发旋转时,例如让正面在0.3秒内旋转到(0,90,0) (0,90,0)(0,90,0),这样正面就看不见了,等旋转完成后再让背面0.3秒旋转到(0,0,0) (0,0,0)(0,0,0),这样背面出现,整个翻转的过程就完成了,如果不明白,可以想象一下一张扑克牌从正面慢慢翻转到背面的情况,首先旋转到侧面对着你,然后再从侧面旋转到背面。

使用方法

  • 导入DoTween插件

  • setup插件

  • 创建一个Canvas

  • 在Canvas下创建一个空物体命名为Card

  • 在Card下创建两个Image(UI),分别命名为Front和Back,大小和位置均相同

  • 给Back和Front附上你选定的图片,如果没有可以用不同颜色替代

  • 给Card附上CardTurnOver.cs脚本

  • 将Front和Back对象拖动到脚本的对应位置

  • 设置脚本的card state,意味着从正面开始还是背面开始

  • 设置脚本的time,即旋转所花费的时间

  • 创建两个Button对象,增加OnClick方法,将Card对象拖进去,并分别调用StartBack和StartFront方法

  • 点击两个按钮就能看到卡牌翻转的效果了,注意只有在正面的时候才能翻到背面,背面同理。
     

脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;//别忘了引用

//卡牌状态,正面、背面
public enum CardState
{
 Front,
 Back
}
public class CardTurnOver : MonoBehaviour{
 public GameObject mFront;//卡牌正面
 public GameObject mBack;//卡牌背面
 public CardState mCardState = CardState.Front;//卡牌当前的状态,是正面还是背面?
 public float mTime = 0.3f;
 private bool isActive = false;//true代表正在执行翻转,不许被打断

 /// 
 /// 初始化卡牌角度,根据mCardState
 /// 
 public void Init()
 {
  if(mCardState==CardState.Front)
  {
   //如果是从正面开始,则将背面旋转90度,这样就看不见背面了
   mFront.transform.eulerAngles = Vector3.zero;
   mBack.transform.eulerAngles = new Vector3(0, 90, 0);
  }
  else
  {
   //从背面开始,同理
   mFront.transform.eulerAngles = new Vector3(0, 90, 0);
   mBack.transform.eulerAngles = Vector3.zero;
  }
 }
 private void Start()
 {
  Init();
 }

 /// 
 /// 留给外界调用的接口
 /// 
 public void StartBack()
 {
  if (isActive)
   return;
  StartCoroutine(ToBack());
 }
 /// 
 /// 留给外界调用的接口
 /// 
 public void StartFront()
 {
  if (isActive)
   return;
  StartCoroutine(ToFront());
 }
 /// 
 /// 翻转到背面
 /// 
 IEnumerator ToBack()
 {
  isActive = true;
  mFront.transform.DORotate(new Vector3(0, 90, 0), mTime);
  for (float i = mTime; i >= 0; i -= Time.deltaTime)
   yield return 0;
  mBack.transform.DORotate(new Vector3(0, 0, 0), mTime);
  isActive = false;

 }
 /// 
 /// 翻转到正面
 /// 
 IEnumerator ToFront()
 {
  isActive = true;
  mBack.transform.DORotate(new Vector3(0, 90, 0), mTime);
  for (float i = mTime; i >= 0; i -= Time.deltaTime)
   yield return 0;
  mFront.transform.DORotate(new Vector3(0, 0, 0), mTime);
  isActive = false;
 }
}

关于怎么在Unity3D中利用DoTween实现卡牌翻转效果就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:怎么在Unity3D中利用DoTween实现卡牌翻转效果-创新互联
本文地址:http://pwwzsj.com/article/cepjed.html