C#/Unity
[Unity2D] Tweening을 사용한 캐릭터 움직이기
반나무
2020. 7. 6. 17:24
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
// 이동간 절대기준 사용위한 Tweening 라이브러리 사용
using DG.Tweening;
public class hero : MonoBehaviour
{
bool _token = false;
// Update is called once per frame
void Update()
{
if(!_token) {
// 왼쪽
if (Input.GetKey(KeyCode.LeftArrow))
{
_token = true;
float EndPositionX = transform.position.x;
EndPositionX -= 1.5f;
// endValue = 도착지, duration = 얼마동안?(1초=1.0f)
// OnComplete = duration이 끝나면 인자 함수를 실행해줌
// SetEase = 움직임 자연스럽게 해주는 효과
// 더블클릭하고 F12 누르면 함수안으로 들어가짐
// enum 열거형 = 배열과는 다르게 상수를 정의하기위해 쓰임
transform.DOMoveX(EndPositionX, 0.5f).OnComplete(ActionComplete).SetEase(Ease.Flash);
// 오른쪽
} else if (Input.GetKey(KeyCode.RightArrow))
{
_token = true;
float EndPositionX = transform.position.x;
EndPositionX += 1.5f;
// endValue = 도착지, duration = 얼마동안?(1초=1.0f)
transform.DOMoveX(EndPositionX, 0.5f).OnComplete(ActionComplete).SetEase(Ease.Flash);
// 위
} else if (Input.GetKey(KeyCode.UpArrow))
{
_token = true;
float EndPositionY = transform.position.y;
EndPositionY += 1.5f;
// endValue = 도착지, duration = 얼마동안?(1초=1.0f)
transform.DOMoveY(EndPositionY, 0.5f).OnComplete(ActionComplete).SetEase(Ease.Flash);
// 아래
} else if (Input.GetKey(KeyCode.DownArrow))
{
_token = true;
float EndPositionY = transform.position.y;
EndPositionY -= 1.5f;
// endValue = 도착지, duration = 얼마동안?(1초=1.0f)
transform.DOMoveY(EndPositionY, 0.5f).OnComplete(ActionComplete).SetEase(Ease.Flash);
/* 좌표를 통해 움직이는 기본적인 코드
Vector3 CurrentPosition = transform.position;
CurrentPosition.y -= 0.01f;
transform.position = CurrentPosition;
*/
}
void ActionComplete()
{
// 토큰값 false
_token = false;
}
}
}
}
반응형