{
moveVec.x = Input.GetAxis("Horizontal");
if (moveVec.x > 1)
_rigidbody2D.velocity = new Vector2(moveVec.normalized.x * maxSpeed, _rigidbody2D.velocity.y);
else
_rigidbody2D.velocity = new Vector2(moveVec.x * maxSpeed, _rigidbody2D.velocity.y);
_animator.SetFloat("Speed", Math.Abs(moveVec.x * maxSpeed));
if (moveVec.x != 0)
{
// 1 : right , -1 : left
_lastInput = (moveVec.x > 0) ? 1 : -1;
_sprite.flipX = moveVec.x < 0; // ๋ฐ๋ ๋ฐฉํฅ -> ์คํ๋ผ์ดํธ ๋ค์ง๊ธฐ
}
}
private void Dash()
{
if (Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.D))
{
if (Time.time - _lastTapTime < _doubleTapTime && _lastInput == ((moveVec.x > 0) ? 1 : -1))
{
if (_lastInput > 0)
{
Debug.Log("Right dash");
}
else
{
Debug.Log("Left dash");
}
return;
}
_lastTapTime = Time.time;
}
}
Move() -> ์บ๋ฆญํฐ์ moveVec.x๋ฅผ ํตํด x ์ถ ์ด๋์ ์ ๋ ฅ๋ฐ๊ณ _lastInput ์ผ๋ก ์ง๋ ์ ๋ ฅ์ ๊ธฐ์ตํจ
Dash() -> ๋ง๊ทธ๋๋ก ๋์ฌ๋ฅผ ๊ตฌํํจ, _lastTapTime, _lastInput ์ ํ์ธํ์ฌ ๋๋ธํญ์ ๊ฐ์งํ๋ ์ญํ ์ ํจ
๊ตฌํ์ 80%๋ ๋์๋ค๊ณ ์๊ฐํ๋๊ฒ ํ์ฌ A,D ํค์ ๋๋ธํญ์ ๋๋ ์์ฃผ ์ ์ธ์์ํจ
๋ฌธ์ ๋ A,D ํค๋ฅผ _doubleTapTime(0.3f) ์์ ๋ฒ๊ฐ์์ ์ ๋ ฅํ์ ๋ ๋ง์ง๋ง์ ์ ๋ ฅํ ํค๋ฅผ ๋์ฌ๋ก ์ธ์ํ๋ค๋ ๊ฑฐ์
๊ทธ๋๊น AD ๋ฅผ 0.3์ด ์์ ์ ๋ ฅํ๋ค -> Right dash ์ด๋๋ฒ๋ฆผ
Dash() ํจ์๋ Update() ๋ฌธ ์์, Move() ํจ์๋ FixedUpdate() ๋ฌธ ์์ ์์ด์ ๋ฐ์ํ ๋ฌธ์ ๊ฐ์๋ฐ
Dash()๋ฅผ FixedUpdate() ๋ก ์ฎ๊ธฐ๋๊ฑด GetKeyDown() ๋๋ฌธ์ ๋ถ๊ฐ๋ฅํจ
๋ฌผ๋ก Move() ๋ฅผ Update() ์์ ๋ฃ๋๊ฑด ๊ฐ๋ฅํ์ง๋ง ๊ทธ๊ฑธ๋ก ํด๊ฒฐ๋ ์ง๋ ์์ง ๋ชจ๋ฅด๊ฒ ๊ณ ... ์ด์์ด๋ฉด ์ง์ํ๊ณ ์ถ์
์์ง์ด๋๊ฑด FixedUpdate() ์ ๋ฃ๋๊ฒ ๋ฐ๋์งํ๋ค๊ณ ๋ค์ด์์ด์ ๊ทธ๋ฐ๊ฐ ์ ์ ๊ฒฌ์ด ์๋๋ฏ
๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋๊ฑฐ ๊ฐ๋ค๋ฉด ๊ทธ๋ ๊ฒ ํด์ผ๊ฒ ์ง๋ง ๋์์ฃผ๋ผ
----------------
๋ญ๊ฐ ์ฐ๊ณ ๋ณด๋๊น ์ ์ด์ ์ฝ๋๊ฐ ์ข ์ด์ํ๋ค
_lastInput == ((moveVec.x > 0) ? 1 : -1)ย ย
์ด ๋ถ๋ถ์ ๋ฐ๊ฟ์ผํ ๊ฑฐ๊ฐ์๋ฐ ์ด๋ป๊ฒ ๋ฐ๊ฟ๊น
ํ๋ ์ด์ด์ ๋ก์ปฌ์ค์ผ์ผ์ ๋ฐ๋ผ ๋ฐฉํฅ์ ๋ด์๋๊ณ ํด๋น ๋ฐฉํฅ์ด ์๋ ๋ ๋ฆฌํดํ๊ธฐ?
๋ก์ปฌ์ค์ผ์ผ์ ๋ฐ๋ฅธ ๋ฐฉํฅ์ด๋ผ๋๊ฒ ๋ญ์ผ?
๊ธ๊ณ ๊ฑ ๋ํผ์ ๋ก ๋์ ์ด๊ธฐ์ ์คํ๋ผ์ดํธ๋ฅผ ๋ค์ง์ด์ฃผ๋๊ฒ๋ณด๋ค ํ๋ ์ด์ด ๊ฒ์์ค๋ธ์ ํธ ์์ฒด๋ฅผ ๋ค์ง์ด์ฃผ๋๊ฒ ๋์ค์ ํฌ์ฌ์ฒด ๋ฐ์ฌํ ๋๋ ๋ค๋ฅธ ์ํฉ์์ ํธํ ๋ฏ. Move์์ ๋ค์ง์ด์ฃผ๋ฉด ์ด๋์ ์ํ ๊ฒ ์๋ ๋ฐฉํฅ์ ํ ๋ฃ์ ๋ ๊ท์ฐฎ์ ๊ฑฐ ๊ฐ๊ธฐ๋ ํ๊ณ .
์คํ๋ผ์ดํธ ์กฐ์ธ ๊ณ ๋ง๋น
int facingDirection; private void Update() { transform.localScale = new Vector3 (facingDirection, 1, 1); } private void Move() { ์์ง์ด๋๊ฑฐ ์ฝ๋์ ์ผ์ชฝ ์ด๋์ผ ๋ facingDirection = -1; ์ค๋ฅธ์ชฝ์ผ ๋ = 1; }
๋์์ค์ ๊ณ ๋ง์ ๋๊ฐ์ ์ ๋ค๋์ ๊ฐค์ ์ง๋ฌธํ๋ฌ์จ๋ค
ํ์ดํ ์ด์ผ
๋ฐฉํฅ๋ ๊ธฐ์ตํ๋ฉด ๋์์
๋๋ธ์ ํ๋ ๋์ฌ๊ฐ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ UniRX๋ฅผ ์ฌ์ฉํ๋ฉด ์ฅ๊ธฐ์ ์ผ๋ก ํธํฉ๋๋น - dc App