캐릭터 이동시 Grid하게 움직인다. 전략시뮬레이션? 끊기면서 움직이는 느낌

private Vector3 gridTransform;
private float gridMoveSpeed = 5.0f;	//그리드 이동시 속도
private float gridMoveDistance = 0.5f;	//그리드 이동거리
private bool gridCanMove = true;	//그리드 이동이 가능한가?
private bool gridMoveDelay = false;	//이동버튼을 누르고 있을때 그리드 이동후 잠시 멈추는 효과를 주기위한 변수
private float gridMoveDelayTime = 0.05f;	//이동버튼을 누르고 있을때 그리드 이동시 잠시 멈춤효과 시간

void Start()
{
	gridTransform = transform.position;
}

void FixedUpdate() {
	float hori_raw = Input.GetAxisRaw(horizontal);
	float ver_raw = Input.GetAxisRaw(vertical);
	
	if (gridTransform == transform.position)
	{
		if (gridCanMove == true)
		{
			if (hori_raw == 1)
			{
				gridTransform += Vector3.right * gridMoveDistance;
			}
			if (hori_raw == -1)
			{
				gridTransform += Vector3.left * gridMoveDistance;
			}
			if (ver_raw == -1)
			{
				gridTransform += Vector3.up * gridMoveDistance;
			}
			if (ver_raw == 1)
			{
				gridTransform += Vector3.down * gridMoveDistance;
			}
			gridCanMove = false;

		}
		else
		{
			if (gridMoveDelay == false)
			{
				gridMoveDelay = true;
				StartCoroutine("GridMoveDelay");
			}
		}
	}
	else
	{
		transform.position = Vector3.MoveTowards(transform.position, gridTransform, Time.deltaTime * gridMoveSpeed);    // Move there
	}
}

IEnumerator GridMoveDelay()
{
	yield return new WaitForSeconds(gridMoveDelayTime);
	gridCanMove = true;
	gridMoveDelay = false;
}


'Unity' 카테고리의 다른 글

스마트폰 해상도 정리  (0) 2016.01.11
이미지UI로 라인 그리기  (0) 2016.01.03
플레이어 가속도 이동  (1) 2016.01.03
UNET 정리 1  (0) 2016.01.02
UNET 동영상강좌(영어)  (0) 2015.12.12
Posted by 빵원군
,