using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Move : MonoBehaviour {
ย ย //movePower, jumpPower๋ฅผ 5๋ก ์ง์
ย ย public float movePower = 5f;
ย ย public float jumpPower = 5f;
ย ย ย
ย ย Rigidbody2D rigid;//?
ย ย Vector3 movement;
ย ย bool isJumping = false;//isJumping์ false๋ก ์ ์
ย ย void Start () {
ย ย ย ย rigid = gameObject.GetComponent<Rigidbody2D> ();//Rigidbody2D ํธ์ถ, rigid๋ก ์ ์
}
void Update () {
ย ย ย ย if (Input.GetButtonDown("Jump")) {
ย ย ย ย ย ย isJumping = true;
ย ย ย ย }//Jumpํค๋ฅผ ๋๋ฅด๋ฉด isJunping์ true๋ก ์ ํ
}
ย ย void FixedUpdate()
ย ย {
ย ย ย ย Player_Move();
ย ย ย ย Player_Jump();
ย ย ย ย //ํธ์ถ
ย ย }
ย ย void Player_Move() {
ย ย ย ย Vector3 moveVelocity = Vector3.zero;
ย ย ย ย if (Input.GetAxisRaw("Horizontal") < 0) {
ย ย ย ย ย ย moveVelocity = Vector3.left;
ย ย ย ย }//์ผ์ชฝ์ผ๋ก ์ด๋
ย ย ย ย else if (Input.GetAxisRaw("Horizontal") > 0) {
ย ย ย ย ย ย moveVelocity = Vector3.right;
ย ย ย ย }//์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
ย ย ย ย transform.position += moveVelocity * movePower * Time.deltaTime;//์ด๋ ๋ช ๋ น
ย ย }
ย ย void Player_Jump() {
ย ย ย ย if (!isJumping)
ย ย ย ย ย ย return;//์ ํ ์ํ ์ํ
ย ย ย ย rigid.velocity = Vector2.zero;//ํ๋ ์ด์ด์ ์ขํ ์ ์
ย ย ย ย Vector2 jumpvelocity = new Vector2(0, jumpPower); //์ ํ ํ ๋์ ์ขํ
ย ย ย ย rigid.AddForce(jumpvelocity, ForceMode2D.Impulse); //์ ํ ๋ช ๋ น
ย ย ย ย isJumping = false; //์ด๊ธฐํ
ย ย }
}
๊ฐ๋จํ๊ฒ ์ด๋์ด๋ ์ ํ๋ง ํ๋ ์ฝ๋์
Rigidbody๋ ๊ฐ์ฒด๋ผ๋ ๋ป์ ๋๋ค. ๊ฐ์ฒด๋ผ๋๊ฑด ์ด๋ ํ๊ฒฝ์ฐ์๋ ์ฐ๊ทธ๋ฌ์ง๊ฑฐ๋ ๊นจ์ง์ง ์๋ ๊ฐ์์ ๋ฌผ์ฒด์ ๋๋ค. ๊ฐ์ฒด๋ผ๋ ๊ฐ๋ ์ผ๋ก ๊ฐ์ฒด์ญํ์ ๊ตฌํํด๋๊ฒ์ด Rigidbody ์ปดํฌ๋ํธ ์ ๋๋ค. ๋ฐฐํ๊ทธ๋ผ์ด๋ ๊ฐ์ ๊ฒ์์์ ์ฐจ๋์ด ์ถฉ๋ํ์๋ ๋ฒํผ๊ฐ ์ฐ๊ทธ๋ฌ์ง๋๊ฒ ์๋๋ผ ๋จ์ํ ๋ฐ๋ฏธ์ง ์ ์ผ๋ฉด ๋ถ์ด๋๋๊ฑธ๋ก ํํํ ์ด์ ๋ ๊ฐ์ฒด์ญํ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋น์ฐํ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ ์ด์ ๋ ์ฑ๋ฅ๋๋ฌธ์.
rigid.velocity = Vector2.zero;//ํ๋ ์ด์ด์ ์ขํ ์ ์ => ์ฌ๊ธฐ์ velocity๋ ์๋๋ผ๋ ๋ป์ ๋๋ค. ๋ฌผ๋ฆฌ์์คํ ์์ ๊ฐ์ฒด๋ ํ์ฌ ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ฐธ๊ณ ๋ก angularVelocity๋ ํ์ ์๋ ์ ๋๋ค.
Vector2 jumpvelocity = new Vector2(0, jumpPower); //์ ํ ํ ๋์ ์ขํ => ์ ํํ ๋ ์ขํ๊ฐ ์๋๋ผ ์๋ฐฉํฅ (y๋ฐฉํฅ)์ผ๋ก jumpPower ๋งํผ ์๋๋ฅผ ๋ถ์ฌํ๊ฒ์ ๋๋ค. ๋น์ฐํ ์๋ก ์ฌ๋ผ๊ฐ๊ฒ ์ง์?
rigid.AddForce(jumpvelocity, ForceMode2D.Impulse); //์ ํ ๋ช ๋ น => ์ด๊ฑด ๋ช ๋ น์ด ์๋๋๋ค. AddForce ๋ง๊ทธ๋๋ก ๊ฐ์ฒด์ ํ์ ๊ฐํ๋ ํจ์์ ๋๋ค. ์๊น ๊ตฌํด๋์ jumpVelocity ๋งํผ์ ํ์ ๊ฐ์ฒด์ ๊ฐํด ๊ฐ์ฒด๋ฅผ ์๋ก ์ฌ๋ฆด๊ฒ์ ๋๋ค.
์ ์ข ๋ญํ์ ๋ ์๋ฌ๋ฆด์ค ์์๋๋ฐ ๊ณ ๋ง์์!!
velocity ์ด๊ฑฐ ์ฌ์ ์์ ์๋๋ผ๊ณ ๋์ค๋๋ฐ ์ขํ๋ก ์ฐ๋๊ฑฐ๊ฐ๊ธธ๋ ์ด์ํ๋ค ์ถ์๋๋ ์ ๋ฐ ๋ป์ด์๊ตฌ๋