๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/์œ ๋‹ˆํ‹ฐ ์—”์ง„(Unity)

์œ ๋‹ˆํ‹ฐ ํƒ€์ผ๋งต์— ๊ตฌ๋ฉ ๋šซ๋Š” ๋ฐฉ๋ฒ•

๐ŸŽฎinspirer9 2023. 7. 9. 18:01
728x90
๋ฐ˜์‘ํ˜•

์œ ๋‹ˆํ‹ฐ์—์„œ ํƒ€์ผ๋งต์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋ ˆ์ด์–ด ์บ๋ฆญํ„ฐ๊ฐ€ ์•„๋ž˜๋กœ ํŒŒ๊ณ ๋“ค์–ด๊ฐ€๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์˜ˆ์ œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ๋Š” 2D ํƒ€์ผ๋งต์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

using UnityEngine;
using UnityEngine.Tilemaps;

public class Drillman : MonoBehaviour
{
    public Tilemap tilemap; // ํƒ€์ผ๋งต ์ฐธ์กฐ ๋ณ€์ˆ˜
    public TileBase emptyTile; // ๊ตฌ๋ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํˆฌ๋ช… ํƒ€์ผ

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            DigHole();
        }
    }

    private void DigHole()
    {
        // ํ˜„์žฌ ํ”Œ๋ ˆ์ด์–ด์˜ ์œ„์น˜
        Vector3Int playerPosition = tilemap.WorldToCell(transform.position);

        // ํ”Œ๋ ˆ์ด์–ด ์•„๋ž˜ ์œ„์น˜์— ๊ตฌ๋ฉ์œผ๋กœ ์‚ฌ์šฉํ•  ํƒ€์ผ์„ ์„ค์ •
        tilemap.SetTile(playerPosition + Vector3Int.down, emptyTile);
    }
}

์ด ์ฝ”๋“œ์—์„œ๋Š” Drillman ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฐ€์ง„ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ๋Š” ์œ„์น˜์—์„œ Space ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ”Œ๋ ˆ์ด์–ด ์•„๋ž˜์— ๊ตฌ๋ฉ์„ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. tilemap ๋ณ€์ˆ˜์—๋Š” ํ•ด๋‹น ํƒ€์ผ๋งต ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ• ๋‹นํ•˜๊ณ , emptyTile ๋ณ€์ˆ˜์—๋Š” ๊ตฌ๋ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํˆฌ๋ช…ํ•œ ํƒ€์ผ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

DigHole() ๋ฉ”์„œ๋“œ์—์„œ๋Š” ํ”Œ๋ ˆ์ด์–ด์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ”Œ๋ ˆ์ด์–ด ์•„๋ž˜ ์œ„์น˜์— ๊ตฌ๋ฉ์œผ๋กœ ์‚ฌ์šฉํ•  ํƒ€์ผ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. SetTile() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์œ„์น˜์— emptyTile์„ ๋ฐฐ์น˜ํ•˜์—ฌ ๊ตฌ๋ฉ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์ฝ”๋“œ๋Š” ์˜ˆ์‹œ๋กœ ๊ตฌํ˜„๋œ ๊ฒƒ์ด๋ฉฐ, ํ”„๋กœ์ ํŠธ์— ๋งž๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๊ตฌ๋ฉ์„ ํ‘œํ˜„ํ•˜๋Š” ํƒ€์ผ๊ณผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์›ํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•