캐릭터 이동시 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 빵원군
,

플레이어 이동에 가속도 주는 소스(레이싱게임의 느낌이 난다.)

// player handling
public float accSpeed = 8;
public float acceleration = 30;//속도

private float accCurrentHoriSpeed;
private float accTargetHoriSpeed;
private float accCurrentVerSpeed;
private float accTargetVerSpeed;
 
void FixedUpdate() {
	float hori_raw = Input.GetAxisRaw(horizontal);
	float ver_raw = Input.GetAxisRaw(vertical);

	accTargetHoriSpeed = hori_raw * accSpeed;
	accCurrentHoriSpeed = IncrementTowards(accCurrentHoriSpeed, accTargetHoriSpeed, acceleration);   //가속도 적용

	accTargetVerSpeed = ver_raw * accSpeed;
	accCurrentVerSpeed = IncrementTowards(accCurrentVerSpeed, accTargetVerSpeed, acceleration);   //가속도 적용 

	transform.Translate(accCurrentHoriSpeed, accCurrentVerSpeed * -1f, 0);
}

private float IncrementTowards(float n, float target,  float a)
{
    if(n == target) {
        return n;
    }
    else {
        float dir = Mathf.Sign(target - n); // must n be increased or decreased to get closer to target
        n += a * Time.deltaTime * dir;
        return (dir == Mathf.Sign(target-n))? n : target; // if n has now passed target then return target, otherwise return n
    }
}


'Unity' 카테고리의 다른 글

이미지UI로 라인 그리기  (0) 2016.01.03
플레이어의 Grid이동 효과  (0) 2016.01.03
UNET 정리 1  (0) 2016.01.02
UNET 동영상강좌(영어)  (0) 2015.12.12
Unity ScrollRect 키입력으로 스크롤 구현  (0) 2015.11.22
Posted by 빵원군
,

UNET 정리 1

Unity 2016. 1. 2. 23:33

Unity Network 엔진인 UNET을 사용하려고 이에 대해 공부하고 정리하려고 한다.


새로운 프로젝트를 생성하고 Empty GameObject를 2개 만든다.

이름은 NetworkManager, Player로 수정한다.


NetworkManager 오브젝트에 NetworkManager, NetworkManagerHUD 컴포넌트를 추가한다.


Player에 NetworkIdentity 컴포넌트를 추가한다. 그리고 Player를 Prefab화하고 Player Prefab을 NetworkManager오브젝트의 NetworkManager 컴포넌트중 Spawn Info의 Player Prefab에 추가한다.

Hierarchy의 Player를 삭제하고 실행한다.

게임창에서 LAN HOST를 눌러 Hierarchy에 Player(clone)가 생기는지 확인한다.



플레이어(나)가 등록된것이다.

다시 File메뉴의 Build&Run을 눌러 새로운 클라이언트를 실행한다.(창모드)

Editor의 실행버튼을 눌러 1개는 LAN HOST, 1개는 LAN Client 를 눌러 2개의 클라이언트가 접속한것을 확인한다.



나와 다른 플레이어를 구분해보자

Player스크립트를 생성하고 아래와 같이 코딩하고 Player Prefab에 추가한다.


using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class Player : NetworkBehaviour {
	void Start () {
        if (isLocalPlayer)
            name = "Player Me";
        else
            name = "Player " + GetComponent<NetworkIdentity>().netId.Value.ToString();
	}
}

다시 실행해보면 플레이어를 구분할 수 있는 것을 확인할 수 있다.(내 Object와 다른 플레이어의 Object)


'Unity' 카테고리의 다른 글

플레이어의 Grid이동 효과  (0) 2016.01.03
플레이어 가속도 이동  (1) 2016.01.03
UNET 동영상강좌(영어)  (0) 2015.12.12
Unity ScrollRect 키입력으로 스크롤 구현  (0) 2015.11.22
물리관련 이동시 떨림현상  (2) 2015.08.15
Posted by 빵원군
,