using UnityEngine;

using System;

using SystemCollections;


//클래스 선언 위에 RequireComponent(typeof(Animator))라는 구문은

//이 게임 오브젝트에 Animator가 없으면 안된다고 명시하는 역활을 합니다.

//이 스크립트가 붙어 있는 게임 오브젝트에 Animaotr 컴포넌트가 없으면 게임이 실행되지 않는다


[RequireComponent(typeof(Animator))]

public class PlayerMovement:MonoBehaviour{


//이 게임 오브젝트에 붙어있는 Animator 컴포넌트를 가져온다

protected Animator avatar;


float lastAttackTime,lastSkillTime,lastDashTime;

public bool attacking=false;

public bool dashing=false;

void Start(){

avatar=GetComponent<Animator>();

}


//h:Horizontal 방향 컨트롤ㄹ러의 가로방향

//v:Vertucal 방향 컨트롤러의 세로뱡항입니다.

float h,v;


//방향 컨트롤러에서 컨트롤러에 변경이 일어나면 호출되는 ㅎ마수입니다.

public void OnStickChanged(Vector2 stickPos)

{

h= stickPos.x;

v=stickPos.y;

{

//매 프레임마다 터치 컨트롤러에서 오는 신호를 애니메이터에 전달합니다.

voidupdate(){

//아바타(애니메이터)가 있어야만 제대로 실행됩니다.

if(avatar){

float back=1f;

if(v<0f)back=-1f;

//애니 메이터에 전달하는 값은 속도 뿐입니다.

avatar.SetFloat("Speed",(h*h+v*v));


Rigidbody rigidbody =GetComponent<Rigidbody>();


if(rigidbody){


Vector3 speed=rigidbody.velocity;

speed.x=4*h;

speed.z=4*v;

rigidbody.velocity=speed;

if(h!=0f && v!=0f){

//캐릭터의 방향 전환은 즉시 이루어지며,

//애니메이터에 전달되지 않고 자체적으로 해결합니다.

transform.rotation=Quaternion.LookRotation(new Vector3(h,0f,v));

}

}

}}


public void OnAttackDown(){

attacking =true;

avatar.SetBool("Combo",true);

StartCoroutine(StartAttack());

}


public void OnAttackUp(){

avatar.SetBool("Combo",false);

attacking=false;

}


IEnumerator StartAttack(){

if(TIme.time-lastAttackTime>1f){

lastAttackTime= TIme.time;

while(attacking){

avatar.SetTrigger("AttackStart");

yield return new WaitForSeconds(1f);

}

}}


public void OnSkillDown(){

if(Time.time-lastSkillTime>1f){

avatar.SetBool("Skill,true");

lastSkillTime=Time.time;

}

}


public void OnSkillUp()

{

avatar.SetBool("Skill",false);

}


public void OnSkillDown()

{

if(Time.time-lastSkillTime>1f)

{

avatar.SetBool("Skill".true);

lastSkillTime=TIme.time;

}

}


public void OnSkillUp()

{

avatar.SetBool("Skill".true);

lastSkillTime=Time.time;

}


public void OnDashDown()

{

if(Time.time-lastDashTime>1f){

lastDashTime=Time.time;

dashing=true;

avatar.SetTrigger("Dash");

}


public void OnDashUp()

{    

dashing=false;

}{

}

//클래스 선언 위에 RequireComponent(typeof(Animator))라는 구문은

//이게임 오브젝트에 Animator가 없으면 안된다고 명시하는 역활을 합니다.

// 이스크립트가 붙어있는 게임오브젝트에 Animator컴포넌트가 없으면 게임이 실행되지않습니다.






'언어 > C#' 카테고리의 다른 글

C# 해외 면접시 TOP50  (0) 2018.12.10
주인공을 따라다니는 카메라 만들기 following camera  (0) 2018.12.10
TouchPad.cs  (0) 2018.12.10
예제로 배우는 C#  (0) 2018.12.07
게임 개발 전체 프로세스  (0) 2018.12.07

유니티 3d엔진을 공부하는 이유


게임업계에서 지배적인 점유율을 가지고 있다

게임 스타트업을 위해 가장 현실적인 게임엔진

게임업계에 취직할 때 스킬 세트로 큰도움이 된다



게임회사의 입장

게임회사는 유니티 엔진을 다룰수있느개발자를 필요로할까요?

정해진 예산 안에서 게임을 잘 만들어서 돈을 벌기위해서



-훌륭한 기계공은 일반 기계공보다 몇 배의 급여를 더 높이 받는다 그러나 훌륭한 코드를 만들어내는 개발자는 일반적인 개발자보다 1만배 이상의 가치가있다-

-빌게이츠-

'언어 > C#' 카테고리의 다른 글

C# 해외 면접시 TOP50  (0) 2018.12.10
주인공을 따라다니는 카메라 만들기 following camera  (0) 2018.12.10
TouchPad.cs  (0) 2018.12.10
예제로 배우는 C#  (0) 2018.12.07
unity player movement.cs 플레이어 움직임 /유니티  (0) 2018.12.07

+ Recent posts