์ผ์ชฝํ์ดํ, ์ค๋ฅธ์ชฝํ์ดํย ๋๋ฅด๋ฉด ์ผ์ ์๋๋ก ์์ง์ผ ์ ์๊ฒย ์ค์ ํ๋๋ฐ
์ ๋ํฐ ์์ฒด์์ ์คํํ๋ ๊ฑด ์บ๋ฆญํฐ๊ฐ ๋๋ฐ๋ก ์์ง์;
๊ทผ๋ฐ ๋น๋ํด์ ์คํํ๋๊น ์ ํํ๋๊ฑด ์ ๋๋ก ๋๋ฉด์ ๋ฐ๋ฅ์์ ์์ง์ด์ง ๋ชปํ๋๋ผ๊ตฌ..
ํน์ ์ฝ๋์ ๋ฌธ์ ์๋ ์ง ๋ด์ค ์ ์์?
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;ย ย ย ย ย ย
ย ย ย ย }
ย ย }
}
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ํ.. deltatime์ด๊ตฌ๋ ์๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค