์ด์ ๊ป ์ ํ ์ ๋๋ฉ์ด์ ๋๋งค ์ง๋ฌธ ์ฌ๋ ธ์๋ ์ค๋ฐ, ๊ฒฐ๊ตญ์ ํด๊ฒฐ๋ชปํจใ ใ ย
๋ค๋ฅธ ์ปจํธ๋กค๋ฌ ์ ํฌ๋ธ๋ ์ ๋ํฐ ํํ ๋ฆฌ์ผ๊บผ ๊ฐ์ ธ์์ ์จ๋ณด๋ ์ด๊ฒ ์กฐ์๊ฐ์ด ์ ค ์ข์๊ฑฐ๊ฐ์์ ๋ชป๋ฒ๋ฆฌ๊ฒ์ ใ
์ฌํผ, ์ง๋ฌธ์ ์ ํ๋ฅผ ํด์ ๋ ์ผ๋ก ๋จ์ด์ง๋ฉด ์ ๋ ์์ผ๋ก ์ ๋ค์ด๊ฐ๋ฒ๋ฆผ.
ํ์ผ๋งต์ ์ฐ๊ณ ์๊ณ , ํ์ผ๋งต ์ฝ๋ผ์ด๋ + ์ปดํผ์ง ์ฝ๋ผ์ด๋ ์ฐ๊ณ ์๋๋ฐ, ๋ญ๊ฐ ์์ธ์ธ์ง๋ฅผ ์ ํํ ๋ชจ๋ฅด๊ฒ ์
ํน์ ๋ชฐ๋ผ์ ์ฝ๋ ๋ ์ฌ๋ฆผ ใ ย
์, ๊ทธ๋ฆฌ๊ณ ํน์ ํ์ผ๋งต ์ฐ๋๋ฐ ํ๋ ์ด ๋ฒํผ ๋๋ฌ์ ํ ์คํธํ๋ค๋ณด๋ฉด ํ์ผ๋งต์ ์๊พธ ํฐ ์ ๊ฐ์๋ฐ ์๊ฒผ๋ค๊ฐ ์ฌ๋ผ์ง๊ณ ํ๋๋ฐ, ์ ๊ทธ๋ฐ๊ฑด์ง ์๋ ์ฌ๋ ์์?
[SerializeField] private float speed;
ย ย [SerializeField] private float jumpForce;
ย ย [Range(0, .3f)] [SerializeField] private float m_MovementSmoothing = .05f;
ย ย [SerializeField] private Transform groundCheck;
ย ย [SerializeField] private LayerMask whatIsGround;
ย ย [SerializeField] private Animator animator;
ย ย const float checkRadius = 0.1f;
ย ย private float moveInput;
ย ย private Rigidbody2D rb;
ย ย private bool facingRight = true;
ย ย private bool isGrounded = false;
ย ย private bool jump = false;
ย ย private int extraJumps = 1;
ย ย private Vector3 refVelocity = Vector3.zero;
ย ย void Start()
ย ย {
ย ย ย ย rb = GetComponent<Rigidbody2D>();
ย ย }
ย ย void FixedUpdate()
ย ย {
ย ย ย ย bool wasGrounded = isGrounded;
ย ย ย ย isGrounded = false;
ย ย ย ย Collider2D[] colliders = Physics2D.OverlapCircleAll(groundCheck.position, checkRadius, whatIsGround);
ย ย ย ย for (int i = 0; i < colliders.Length; i++)
ย ย ย ย {
ย ย ย ย ย ย if (colliders[i].gameObject != gameObject)
ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย isGrounded = true;
ย ย ย ย ย ย ย ย if (!wasGrounded)
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย animator.SetBool("Jump", false);
ย ย ย ย ย ย ย ย ย ย jump = false;
ย ย ย ย ย ย ย ย }
ย ย ย ย ย ย }
ย ย ย ย }
ย ย ย ย moveInput = Input.GetAxisRaw("Horizontal");
ย ย ย ย Vector3 targetVelocity = new Vector3(moveInput * speed * Time.fixedDeltaTime, rb.velocity.y);
ย ย ย ย rb.velocity = Vector3.SmoothDamp(rb.velocity, targetVelocity, ref refVelocity, m_MovementSmoothing);
ย ย ย ย animator.SetFloat("Speed", Mathf.Abs(moveInput) * speed);
ย ย ย ย if (facingRight == false && moveInput > 0)
ย ย ย ย {
ย ย ย ย ย ย Flip();
ย ย ย ย }
ย ย ย ย else if (facingRight == true && moveInput < 0)
ย ย ย ย {
ย ย ย ย ย ย Flip();
ย ย ย ย }
ย ย }
ย ย
ย ย void Update()
ย ย {
ย ย ย ย Debug.Log(isGrounded);
ย ย ย ย //Debug.Log(animator.GetBool("Jump"));
ย ย ย ย if (isGrounded == true)
ย ย ย ย {
ย ย ย ย ย ย extraJumps = 1;
ย ย ย ย }
ย ย ย ย if (Input.GetButtonDown("Jump") && extraJumps > 0)
ย ย ย ย {
ย ย ย ย ย ย Jump();
ย ย ย ย ย ย extraJumps--;
ย ย ย ย }else if (Input.GetButtonDown("Jump") && extraJumps == 0 && isGrounded == true)
ย ย ย ย {
ย ย ย ย ย ย Jump();
ย ย ย ย }
ย ย }
ย ย void Jump()
ย ย {
ย ย ย ย animator.SetBool("Jump", true);
ย ย ย ย jump = true;
ย ย ย ย isGrounded = false;
ย ย ย ย rb.velocity = new Vector2(rb.velocity.x, jumpForce);
ย ย }
ย ย void Flip()
ย ย {
ย ย ย ย facingRight = !facingRight;
ย ย ย ย Vector2 theScale = transform.localScale;
ย ย ย ย theScale.x *= -1;
ย ย ย ย transform.localScale = theScale;
ย ย }
์ธ์ ํ๋ก์ ํธ ํ์ผ ์ฒด๋ก ํจ ๋ณด๋ด์ค ๋ฐ๋ฐ ใ ใ ์น ๋ณด๊ณ ๋ญ๊ฐ ์๋ชป๋๋์ง ์ฐพ๋๊ฒ ์ข์๋ฏ ใ ์ผ์์์ ์ฌ๋ฆ ๊ฐ๊ธฐ๊ฐ ๋จ์ด์ง์ง ์๋๋ค์์ด์ ใ ใ
Cogito / ๋์ผ ์ธ์ ๋ ํ์์ด์ง ใ ใ ๋์ค์ ์๊ฐ ๋จ์ ๋ ๋ถํํด ใ ใ
ใด ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๊ฐ์๋ฐ ์ฌ๋ ค์ ๋งํฌ๋ฅผ ๋ด ๋ฐฉ๋ช ๋ก์ ๋น๋ฐ๊ธ๋ก ์ฌ๋ ค์ค ใ ใ ใ ์ค๋์ ๊ฐ๊ธฐ๋๋งค ๋ฌด๋ฆฌ๊ณ ๋ด์ผ์ด๋ ํ์ธ ํด๋ณผ๊ป!
ํ์ผ๋งต ์ฌ์ด์ ํฐ ์ ์ด๋ผ๊ณ ์๊ฐ๋๋ ๊ฑด ํ์ผ๊ณผ ํ์ผ ์ฌ์ด์ ๋ฏธ์ธํ๊ฒ ๊ฐญ์ด ์์ด์ ๊ทธ๋ด๊ฑฐ์ ๊ทธ๊ฒ ์ขํ์์ ๊ฐญ์ผ์๋ ์๊ณ ํํฐ ๋จน์ด์ ์ ํ์ผ์ด ๋ณด์ฌ์ ๊ทธ๋ฐ ๊ฑธ ์๋ ์์ ์คํ๋ผ์ดํธ ํ ์ค์ณ์ ํํฐ๋ฅผ no filter๋ก, mipmap๋ ํด์ฒดํด๋ด๋ผ
116.127 / ๊ทธ๊ฑด ๋ค ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ๋์๋๋ ใ
rigidbody continuous๋ก ํ์?
122.44 / ใ ใ ๋ฐฉ๊ธ ๋ฐ๊ฟง๋๋ฐ ๊ทธ๋๋ ์๋ ใ
์บ๋ฆญํฐ๊ฐ ๋จ์ด์ง๋ ์๋๊ฐ ๋น ๋ฅธ ๊ฒฝ์ฐ ํ๋ ์์ด ๋๋ฌด ์๋์ค๋ฉด ์ถฉ๋ ๊ฑด๋๋ฐ์ด์ ์ปฌ๋ผ์ด๋ ์๋๋ก ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด ํ๋ฐ... ํน์ ํ๋กํ์ผ๋ฌ ๊ฐ์๊ฑฐ ๋์์ ํ๋ ์ ์์ฒญ ์๋์ค๋ ๊ฑด ์๋? ๊ฐ์ ์๋ฆฌ์์ ๊ณ์ ๋น ์ง๋ ๊ฑฐ๋ฉด ์ปฌ๋ผ์ด๋๋ฅผ ์๋ชป ๋ง๋ค์ด์ ๊ทธ๋ฐ ๊ฑธํ ๊ณ ..
fps๋ 180์ ๋ ๋จ๋๋ .. ์ปฌ๋ผ์ด๋๋ ํ์ผ๋งต + ์ปดํผ์ง์ด๋ผ์ ํ์ผ๋งต ํ๋ ํธ ์ฐ๋ฉด ์๋์ผ๋ก ์ ์ฉ๋๋๊ฑฐ๋ผ ์ ๋ํฐ ์์ฒด ๋ฌธ์ ๊ฐ ์๋๋ผ๋ฉด ๋ฌธ์ ๋ ์์๋ฏ