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 |