๐ŸŽฎ 6Ch ๋‹ท์ง€ - ํ”Œ๋ ˆ์ด์–ด์ œ์ž‘

Oguยท2022๋…„ 2์›” 18์ผ
0

Unity - ๋‹ท์ง€

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

๐ŸŒต ํ”Œ๋ ˆ์ด์–ด ์ œ์ž‘

๐Ÿ“Œ Material

Material = ์…ฐ์ด๋” + ํ…์Šค์ณ , ์˜ค๋ธŒ์ ํŠธ์˜ ํ”ฝ์…€ ์ปฌ๋Ÿฌ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.
์…ฐ์ด๋” - ์ฃผ์–ด์ง„ ์ž…๋ ฅ์— ๋”ฐ๋ผ ํ”ฝ์…€์˜ ์ตœ์ข… ์ปฌ๋Ÿฌ๋ฅผ ๊ฒฐ์ •
ํ…์Šค์ฒ˜ - ํ‘œ๋ฉด์— ์ž…ํžˆ๋Š” ์ด๋ฏธ์ง€ํŒŒ์ผ
์•Œ๋ฒ ๋„(Albedo) - ๋ฐ˜์‚ฌ์œจ, ๋ฌผ์ฒด ํ‘œ๋ฉด์˜ ๊ธฐ๋ณธ์ƒ‰

๐Ÿ“Œ Player ํƒœ๊ทธ ์„ค์ •

ํƒ„์•Œ ์ž…์žฅ์—์„œ ์ถฉ๋Œํ•œ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ํ”Œ๋ ˆ์ด์–ด์ธ์ง€ ๊ตฌ๋ถ„ํ•œ๋‹ค.

๐ŸŒต ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฐ์ง€

์ž…๋ ฅ์„ ๊ฐ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ - Update(), Inputํด๋ž˜์Šค์˜ ์ž…๋ ฅ ๊ฐ์ง€ ๋ฉ”์„œ๋“œ

๐Ÿ“Œ Update()

ํ•œ ํ”„๋ ˆ์ž„์— ํ•œ๋ฒˆ, ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ๋ฐ˜๋ณต ์‹คํ–‰
Input ํด๋ž˜์Šค - ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๊ฐ์ง€ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋ชจ์•„๋‘” ์ง‘ํ•ฉ

if(Input.GetKey(Keycode.Uparrow) == true){
playerRigidbody.Addforce(0f, 0f, speed)

Input.GetKey() - ํ‚ค๋ณด๋“œ์˜ ์‹๋ณ„์ž๋ฅผ KeyCodeํƒ€์ž…์œผ๋กœ ์ž…๋ ฅ๋ฐ›์Œ


๐ŸŒต ํ”Œ๋ ˆ์ด์–ด ์‚ฌ๋ง ์ฒ˜๋ฆฌ

๐Ÿ“Œ Die(), gameObject

gameObject.SetActive(false)
// ์ž์‹ ์˜ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋น„ํ™œ์„ฑํ™”

gameObject | ์ปดํฌ๋„ŒํŠธ ์ž…์žฅ์—์„œ ์ž์‹ ์ด ์ถ”๊ฐ€๋œ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” GameObjectํƒ€์ž…์˜ ๋ณ€์ˆ˜

SetActive() | ์Šค์Šค๋กœ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋„๊ณ  ์ผœ๋Š” ๊ธฐ๋Šฅ์„ ์ฝ”๋“œ์ƒ์œผ๋กœ ๊ตฌํ˜„

๐ŸŒต PlayerController

๐Ÿ“Œ Start() ๋ฉ”์„œ๋“œ ์ˆ˜์ •

private Rigidbody playerRigidbody;
playerRigidbody = GetComponent<Rigidbody>();

์ œ๋„ค๋ฆญ | <>, ์ œ๋„ค๋ฆญ์€ ๋ฉ”์„œ๋“œ๋‚˜ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ํƒ€์ž…์— ํ˜ธํ™˜๋˜๊ฒŒ ํ•œ๋‹ค.

๐Ÿ“Œ ์กฐ์ž‘๊ฐ ๊ฐœ์„ 

PlayerController ์Šคํฌ๋ฆฝํŠธ์˜ Update() ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜์ •

  • ์ˆ˜ํ‰์ถ•๊ณผ ์ˆ˜์ง์ถ•์˜ ์ž…๋ ฅ๊ฐ’์„ ๊ฐ์ง€
  • ์†๋„๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ƒˆ๋กœ์šด Vector3 ์ƒ์„ฑ
  • ๋ฆฌ์ง€๋“œ๋ฐ”๋”” ์ปดํฌ๋„ŒํŠธ์˜ ์†๋„๋ฅผ ๋ณ€๊ฒฝ
    void Update()
    {
        // ์ˆ˜ํ‰์ถ•๊ณผ ์ˆ˜์ง์ถ•์˜ ์ž…๋ ฅ๊ฐ’์„ ๊ฐ์ง€ํ•˜์—ฌ ์ €์žฅ
        float xInput = Input.GetAxis("Horizontal");
        float zInput = Input.GetAxis("Vertical");

        // ์‹ค์ œ ์ด๋™ ์†๋„๋ฅผ ์ž…๋ ฅ๊ฐ’๊ณผ ์ด๋™ ์†๋ ฅ์„ ์‚ฌ์šฉํ•ด ๊ฒฐ์ •
        float xSpeed = xInput * speed;
        float zSpeed = zInput * speed;

        // Vector3 ์†๋„๋ฅผ (xPeed, 0, zSpeed)๋กœ ์ƒ์„ฑ
        Vector3 newVelocity = new Vector3(xSpeed, 0f, zSpeed);
        // ๋ฆฌ์ง€๋“œ๋ฐ”๋””์˜ ์†๋„์— newVelocity ํ• ๋‹น
        playerRigidbody.velocity = newVelocity;

    }

GetAxis() | ์–ด๋–ค ์ถ•์— ๋Œ€ํ•œ ์ž…๋ ฅ๊ฐ’์„ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
ex ) Horizontal, Vertical etc..

Vector3 | ์›์†Œ x, y, z๋ฅผ ๊ฐ€์ง€๋Š” ํƒ€์ž…

๐ŸŒผ AddForce()์™€ velocity์˜ ์ฐจ์ด

๊ด€์„ฑ ์ฐจ์ด
AddForce() ๋ฉ”์„œ๋“œ์—์„œ๋Š” ํž˜์„ ๋ˆ„์ ํ•˜๊ณ  ์†๋ ฅ์„ ์ ์ง„์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
Rigidbody์˜ velocity๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์ด์ „ ์†๋„๋ฅผ ์ง€์šฐ๊ณ  ์ƒˆ๋กœ์šด ์†๋„๋ฅผ ์‚ฌ์šฉ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ด€์„ฑ์„ ๋ฌด์‹œํ•˜๊ณ  ์†๋„๊ฐ€ ์ฆ‰์‹œ ๋ณ€๊ฒฝ๋œ๋‹ค.\


๐ŸŒต ์ž…๋ ฅ ๋งค๋‹ˆ์ €

๐Ÿ“Œ ์ž…๋ ฅ ์ด๋ฆ„ (๊ธฐ๋Šฅ์˜ ์ด๋ฆ„ - ๋งคํ•‘๋œ ํ‚ค)

        // ์ˆ˜ํ‰์ถ•๊ณผ ์ˆ˜์ง์ถ•์˜ ์ž…๋ ฅ๊ฐ’์„ ๊ฐ์ง€ํ•˜์—ฌ ์ €์žฅ
        float xInput = Input.GetAxis("Horizontal");
        float zInput = Input.GetAxis("Vertical");

์ฝ”๋“œ (์‹ค์ œ ๋ฐœ์‚ฌ ๊ธฐ๋Šฅ) <-> ์ž…๋ ฅ ์ด๋ฆ„("๋ฐœ์‚ฌ") <-> ์ž…๋ ฅ ์žฅ์น˜(๋งˆ์šฐ์Šค ์™ผ์กฑ ๋ฒ„ํŠผ)
์ฝ”๋“œ (์‹ค์ œ ๋ฐœ์‚ฌ ๊ธฐ๋Šฅ) <-> ์ž…๋ ฅ ์ด๋ฆ„("๋ฐœ์‚ฌ") <-> ์ž…๋ ฅ ์žฅ์น˜(๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ)
์ถ• = ์ž…๋ ฅ ์ด๋ฆ„

  1. ์ž…๋ ฅ ๋งค๋‹ˆ์ €์—์„œ horizontal ์ถ•์„ ์ฐพ์Œ
  2. Horizontal ์ถ•์— ๋Œ€์‘๋˜๋Š” ๋ฒ„ํŠผ(<-, a, ->, d)๋“ค๋กœ ํ˜„์žฌ ์ž…๋ ฅ์„ ๊ฒ€์‚ฌ > ๊ฐ์ง€๋œ ์ž…๋ ฅ๊ฐ‘ ใ……๋ฐ˜ํ™˜

๐Ÿ“Œ ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ(xbox, ps4)

๋‘๋ฒˆ์งธ Horizontal ์ถ•๊ณผ Vertical ์ถ• : ์—‘์Šค๋ฐ•์Šค์™€ ๊ฐ™์€ ์ฝ˜์†” ๊ฒŒ์ž„๊ธฐ ๊ฒŒ์ž„ ํŒจ๋“œ์˜ ์กฐ์ด์Šคํ‹ฑ์— ๋Œ€์‘๋œ๋‹ค.

profile
็งใฏใ‚ฒใƒผใƒ ใจๆ—ฅๆœฌใŒๅฅฝใใชBackend Developerๅฟ—ๆœ›็”ŸใฎOguใงใ™๐Ÿค๐Ÿค

0๊ฐœ์˜ ๋Œ“๊ธ€