Unity3D 는 DoTween 을 이용 하여 카드 반전 효 과 를 실현 합 니 다.
그림 1 카드 뒤 집기 효과
DoTween 에 대해 서...
DoTween 은 매우 강력 하고 사용 하기 좋 은 애니메이션 효과 플러그 인 으로 무료 버 전과 유 료 버 전이 있 으 며 무료 버 전 은 대부분의 수 요 를 만족 시 킬 수 있 습 니 다.Unity Assets Store 에서 다운로드 할 수 있 고 이 효과 에서 DoTween 의 회전 기능 을 사용 합 니 다.
디자인 아이디어
빈 물 체 를 만 듭 니 다.빈 물체 아래 에 두 개의 image 대상 이 있 습 니 다.하 나 는 정면 이 고 하 나 는 뒷면 입 니 다.우리 가 정면 에서 시작한다 고 가정 하면 초기 상태 에서 정면 의 회전 각 도 는(0,0,0)(0,0,0)이 고 뒷면 의 회전 각 도 를(0,90,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)로 회전 시 키 면 뒷면 이 나타 나 전체 반전 과정 이 완성 된다.만약 이해 하지 못 한다 면 카드 한 장 이 정면 에서 뒷면 으로 천천히 뒤 집 히 는 상황 을 상상 해 볼 수 있다.먼저 옆으로 돌려 서 너 를 향 해,그리고 측면 에서 뒷면 으로 돌려 라.
사용 방법
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 ,
/// <summary>
/// , mCardState
/// </summary>
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();
}
/// <summary>
///
/// </summary>
public void StartBack()
{
if (isActive)
return;
StartCoroutine(ToBack());
}
/// <summary>
///
/// </summary>
public void StartFront()
{
if (isActive)
return;
StartCoroutine(ToFront());
}
/// <summary>
///
/// </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>
///
/// </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;
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity 공부 일지~블렌드 셰이프 조작 방법 그 ①게임을 만들고 싶다 ~라고 생각하고 마지막 날부터 Unity를 만지기 시작했습니다 HITOMI2236입니다. 이번 블렌드 셰이프에 대해 조사했으므로 여기에 기록하려고 합니다. 개인용 메모입니다만, 만약 같은 곳에서 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.