欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁 > 軟件編程 > C#教程 >

Unity3D利用DoTween實(shí)現(xiàn)卡牌翻轉(zhuǎn)效果

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊: 次

利用Unity的UGUI制作了2D卡牌翻轉(zhuǎn)的效果,如果是sprite對(duì)象的話,原理應(yīng)該也是一樣的,以下是效果圖

 

圖1 卡牌翻轉(zhuǎn)效果

關(guān)于DoTween

DoTween是一款十分強(qiáng)大且好用的動(dòng)畫效果插件,有免費(fèi)版和收費(fèi)版,免費(fèi)版就可以滿足大部分需求了,在Unity Assets Store里就可以下載,在本效果里就用了DoTween的旋轉(zhuǎn)功能。

設(shè)計(jì)思路

創(chuàng)建一個(gè)空物體,空物體下有兩個(gè)image對(duì)象,一個(gè)是正面,一個(gè)是背面。假設(shè)我們從正面開始,則初始狀態(tài)下正面的旋轉(zhuǎn)角度為(0,0,0) (0,0,0)(0,0,0),讓背面的旋轉(zhuǎn)角度為(0,90,0) (0,90,0)(0,90,0),這樣背面就看不見了。
觸發(fā)旋轉(zhuǎn)時(shí),例如讓正面在0.3秒內(nèi)旋轉(zhuǎn)到(0,90,0) (0,90,0)(0,90,0),這樣正面就看不見了,等旋轉(zhuǎn)完成后再讓背面0.3秒旋轉(zhuǎn)到(0,0,0) (0,0,0)(0,0,0),這樣背面出現(xiàn),整個(gè)翻轉(zhuǎn)的過程就完成了,如果不明白,可以想象一下一張撲克牌從正面慢慢翻轉(zhuǎn)到背面的情況,首先旋轉(zhuǎn)到側(cè)面對(duì)著你,然后再從側(cè)面旋轉(zhuǎn)到背面。

使用方法

  • 導(dǎo)入DoTween插件
  • setup插件
  • 創(chuàng)建一個(gè)Canvas
  • Canvas下創(chuàng)建一個(gè)空物體命名為Card
  • Card下創(chuàng)建兩個(gè)Image(UI),分別命名為FrontBack,大小和位置均相同
  • BackFront附上你選定的圖片,如果沒有可以用不同顏色替代
  • Card附上CardTurnOver.cs腳本
  • FrontBack對(duì)象拖動(dòng)到腳本的對(duì)應(yīng)位置
  • 設(shè)置腳本的card state,意味著從正面開始還是背面開始
  • 設(shè)置腳本的time,即旋轉(zhuǎn)所花費(fèi)的時(shí)間
  • 創(chuàng)建兩個(gè)Button對(duì)象,增加OnClick方法,將Card對(duì)象拖進(jìn)去,并分別調(diào)用StartBackStartFront方法
  • 點(diǎn)擊兩個(gè)按鈕就能看到卡牌翻轉(zhuǎn)的效果了,注意只有在正面的時(shí)候才能翻到背面,背面同理。

腳本

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

//卡牌狀態(tài),正面、背面
public enum CardState
{
 Front,
 Back
}
public class CardTurnOver : MonoBehaviour{
 public GameObject mFront;//卡牌正面
 public GameObject mBack;//卡牌背面
 public CardState mCardState = CardState.Front;//卡牌當(dāng)前的狀態(tài),是正面還是背面?
 public float mTime = 0.3f;
 private bool isActive = false;//true代表正在執(zhí)行翻轉(zhuǎn),不許被打斷

 /// <summary>
 /// 初始化卡牌角度,根據(jù)mCardState
 /// </summary>
 public void Init()
 {
  if(mCardState==CardState.Front)
  {
   //如果是從正面開始,則將背面旋轉(zhuǎn)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();
 }

 /// <summary>
 /// 留給外界調(diào)用的接口
 /// </summary>
 public void StartBack()
 {
  if (isActive)
   return;
  StartCoroutine(ToBack());
 }
 /// <summary>
 /// 留給外界調(diào)用的接口
 /// </summary>
 public void StartFront()
 {
  if (isActive)
   return;
  StartCoroutine(ToFront());
 }
 /// <summary>
 /// 翻轉(zhuǎn)到背面
 /// </summary>
 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;

 }
 /// <summary>
 /// 翻轉(zhuǎn)到正面
 /// </summary>
 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;
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:Unity3D實(shí)現(xiàn)物體旋轉(zhuǎn)縮放移動(dòng)效果

欄    目:C#教程

下一篇:UGUI實(shí)現(xiàn)ScrollView無限滾動(dòng)效果

本文標(biāo)題:Unity3D利用DoTween實(shí)現(xiàn)卡牌翻轉(zhuǎn)效果

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4874.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有