์™ผ์ชฝํ™”์‚ดํ‘œ, ์˜ค๋ฅธ์ชฝํ™”์‚ดํ‘œย ๋ˆ„๋ฅด๋ฉด ์ผ์ • ์†๋„๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ฒŒย ์„ค์ •ํ–ˆ๋Š”๋ฐ

์œ ๋‹ˆํ‹ฐ ์ž์ฒด์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฑด ์บ๋ฆญํ„ฐ๊ฐ€ ๋˜‘๋ฐ”๋กœ ์›€์ง์ž„;

๊ทผ๋ฐ ๋นŒ๋“œํ•ด์„œ ์‹คํ–‰ํ•˜๋‹ˆ๊นŒ ์ ํ”„ํ•˜๋Š”๊ฑด ์ œ๋Œ€๋กœ ๋˜๋ฉด์„œ ๋ฐ”๋‹ฅ์—์„œ ์›€์ง์ด์งˆ ๋ชปํ•˜๋”๋ผ๊ตฌ..

ํ˜น์‹œ ์ฝ”๋“œ์— ๋ฌธ์ œ ์žˆ๋Š” ์ง€ ๋ด์ค„ ์ˆ˜ ์žˆ์Œ?


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class PlayerController : MonoBehaviour

{

ย  ย  GameObjectManager gameobjectmanager;

ย  ย  Rigidbody2D rigid2d;

ย  ย  Animator animator;


ย  ย  //๋ฌด์ ์‹œ๊ฐ„ ๊ณ„์‚ฐ

ย  ย  float timer = 4.0f;

ย  ย  public float P_NonhitTime = 4.0f;


ย  ย  //ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ ์ด๋™์†๋„

ย  ย  private float P_movespeed = 3.0f;

ย  ย  //ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ ์ ํ”„๋†’์ด

ย  ย  private float P_JumpForce = 350.0f;

ย  ย  //ํ”Œ๋ ˆ์ด์–ด ์ด๋™์†๋„ ์ œํ•œ

ย  ย  private float P_maxMoveSpeed = 3.0f;

ย  ย  //๊ฐ•ํ™” ์ˆ˜์น˜์— ๋”ฐ๋ฅธ ์ด๋™, ์ ํ”„๋†’์ดย ์ฆ๊ฐ€๋Ÿ‰

ย  ย  public float P_IncreaseSpeed = 0.3f;

ย  ย  public float P_IncreaseJump = 35.0f;

ย  ย  int k = 0;


ย  ย  //y์ถ• ํ™•์ธย ์ง€์ˆ˜

ย  ย  public float p = Mathf.Epsilon;


ย  ย  void Start()

ย  ย  {

ย  ย  ย  ย  this.gameobjectmanager = GameObject.Find("GameObjectManager").GetComponent<GameObjectManager>();

ย  ย  ย  ย  this.rigid2d = GetComponent<Rigidbody2D>();

ย  ย  ย  ย  this.animator = GetComponent<Animator>();



ย  ย  }



ย  ย  void Update()

ย  ย  {

ย  ย  ย  ย  //๋ฌด์  ์‹œ๊ฐ„ ๊ณ„์‚ฐ๊ธฐ.

ย  ย  ย  ย  this.timer += Time.deltaTime;

ย  ย  ย  ย 

ย  ย  ย  ย  if (gameobjectmanager.m_PlayerJumpUp <= 3)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  this.P_JumpForce = 350.0f + gameobjectmanager.m_PlayerJumpUp * 100.0f;

ย  ย  ย  ย  }

ย  ย  ย  ย  if (gameobjectmanager.m_PlayerSpeedUp <= 3)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  this.P_movespeed = 3.0f + gameobjectmanager.m_PlayerSpeedUp * 0.2f;

ย  ย  ย  ย  }

ย  ย  ย  ย  //ํ”Œ๋ ˆ์ด์–ด์˜ y์ถ• ์ด๋™์—ฌ๋ถ€ ํ™•์ธ

ย  ย  ย  ย  float T = this.rigid2d.velocity.y;

ย  ย  ย  ย  //์ŠคํŽ˜์ด์Šค ๋ฐ”๋ฅผ ๋ˆ„๋ฅผ ์‹œ ์ ํ”„

ย  ย  ย  ย  if (Input.GetKeyDown(KeyCode.Space)&&-0.0001f<T&&T<0.0001f)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  this.rigid2d.AddForce(transform.up * this.P_JumpForce);

ย  ย  ย  ย  }

ย  ย  ย  ย  //์ ํ”„์‹œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถœ๋ ฅ

ย  ย  ย  ย  if(0.0001f < T)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  this.animator.SetTrigger("JumpTrigger");

ย  ย  ย  ย  }

ย  ย  ย  ย  this.k = 0;

ย  ย  ย  ย  //์ขŒ์šฐ ์ด๋™

ย  ย  ย  ย  if(Input.GetKey(KeyCode.RightArrow))

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  k = 1;

ย  ย  ย  ย  }

ย  ย  ย  ย  if(Input.GetKey(KeyCode.LeftArrow))

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  k = -1;

ย  ย  ย  ย  }

ย  ย  ย  ย  //ํ”Œ๋ ˆ์ด์–ด ์ด๋™์†๋„

ย  ย  ย  ย  float speedx = Mathf.Abs(this.rigid2d.velocity.x);



ย  ย  ย  ย  //์ด๋™

ย  ย  ย  ย  if (speedx < this.P_maxMoveSpeed)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  this.rigid2d.AddForce(transform.right * k * P_movespeed);

ย  ย  ย  ย  }

ย  ย  ย  ย  speedx *= k;

ย  ย  ย  ย  //๋Œ€๊ธฐ ์ค‘์ผ ๋•Œ ๋Œ€๊ธฐ ๋ชจ์…˜ย ์ถœ๋ ฅ

ย  ย  ย  ย  if (speedx == 0&&T==0)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  this.animator.SetTrigger("IdleTrigger");

ย  ย  ย  ย  }


ย  ย  ย  ย  if (k != 0&& -0.0001f < T && T < 0.0001f)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  this.animator.SetTrigger("WalkTrigger");

ย  ย  ย  ย  }



ย  ย  ย  ย  //ํ”Œ๋ ˆ์ด์–ด ํšŒ์ „ ๋ฐ ๊ฑท๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถœ๋ ฅ

ย  ย  ย  ย  if (k !=0)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  transform.localScale = new Vector3(2*k, 2, 2);

ย  ย  ย  ย  }



ย  ย  ย  ย  //์ฒด๋ ฅ์ด 3 ์ด์ƒ์ผ ๊ฒฝ์šฐ ์ฒด๋ ฅ์„ 3์œผ๋กœ ์ดˆ๊ธฐํ™”

ย  ย  ย  ย  if(this.gameobjectmanager.m_RemainHP > 3)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  this.gameobjectmanager.m_RemainHP = 3;

ย  ย  ย  ย  }

ย  ย  ย 

ย  ย  }


ย  ย ย 

ย  ย  void OnTriggerEnter2D(Collider2D other)

ย  ย  {ย ย 

ย  ย  ย  ย  //ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ๊ณผ ๋ถ€๋”ชํ˜”์„ ๋•Œ ๊ทธ๊ฒƒ์ด ๋ชฌ์Šคํ„ฐ๋ผ๋ฉด ์‹คํ–‰, ํ”ผ๊ฒฉ ์ดํ›„ 4์ดˆ ๋ฌด์ !

ย  ย  ย  ย  if (other.gameObject.tag.Equals("Monster")&&this.timer > this.P_NonhitTime)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  //์•„ํŒŒํ•˜๋Š” ๋ชจ์…˜ ์ถœ๋ ฅ!

ย  ย  ย  ย  ย  ย  this.animator.SetTrigger("HurtTrigger");


ย  ย  ย  ย  ย  ย  //์ฒด๋ ฅ ๊ฐ์†Œ

ย  ย  ย  ย  ย  ย  this.gameobjectmanager.m_RemainHP -= 1;

ย  ย  ย  ย  ย  ย  this.timer = 0;ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  }



ย  ย  }

}