Camera ko - Akiaaaa20/Bit8_CLI GitHub Wiki
Camera ์์คํ
English | ็น้ซไธญๆ | ๆฅๆฌ่ช | ํ๊ตญ์ด
BIT8_CLI๋ ๊ฒ์ ์ธ๊ณ์์ ํ๋ฉด์ ํ์ํ ์์ญ์ ์ ์ดํ๋ Camera ์์คํ ์ ์ ๊ณตํฉ๋๋ค.
BIT8_CLI 0.1.0์์ Camera๋ Map ๋ฐ์ดํฐ์ ์ฐ๊ฒฐ๋๋ฉฐ World ์ขํ๋ฅผ ์ฌ์ฉํ๋ ๋ ๋๋ง์ ์ํฅ์ ์ค๋๋ค.
๊ฒ์์ ๊ณ ์ ๋ 64 ร 64 ํฝ์ Viewport๋ฅผ ์ฌ์ฉํฉ๋๋ค.
1. Camera ๊ฐ์
Camera๋ ๊ฒ์ ์ธ๊ณ์์ ํ์ํ ์์ญ์ ์ค์ฌ์ ์ ์ํฉ๋๋ค.
Framebuffer ํด์๋๋ ๊ณ ์ ๋์ด ์์ต๋๋ค.
64 ร 64 pixels
Map์ Viewport๋ณด๋ค ํจ์ฌ ํด ์ ์์ต๋๋ค.
Camera๋ ํฐ ๊ฒ์ ์ธ๊ณ์ ์ด๋ ๋ถ๋ถ์ด ํ๋ฉด์ ๋ํ๋ ์ง ๊ฒฐ์ ํฉ๋๋ค.
2. Camera์ Map
Camera ๋ฐ์ดํฐ๋ Map ์์คํ ์ ์ผ๋ถ๋ก ์ ์ฅ๋ฉ๋๋ค.
.b8map ํ์ผ์๋ ๋ค์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
- Tile ๋ฐ์ดํฐ
- Node
- Camera
Camera๋ฅผ ์ฌ์ฉํ๋ฉด Framebuffer ํด์๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ Map์ ๋ค๋ฅธ ์์ญ์ ํ์ํ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ Maps ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
3. Camera ์์น
Camera๋ World ์ขํ์์ ์์น๋ฅผ ๊ฐ์ง๋๋ค.
์ด ์์น๋ Viewport์ ์ค์ฌ์ ๋ํ๋ ๋๋ค.
์:
Camera position: (100, 80)
Viewport size: 64 ร 64
๊ฐ๋ ์ ์ผ๋ก ํ์ ์์ญ์ Camera ์ค์ฌ์์ ๊ฐ ๋ฐฉํฅ์ผ๋ก ์ฝ 32ํฝ์ ํ์ฅ๋ฉ๋๋ค.
๋๋ต์ ์ธ ํ์ ์์ญ:
X: 68 to 131
Y: 48 to 111
์ ํํ ํฝ์ ๊ฒฝ๊ณ๋ Runtime์ ์ขํ ์ฒ๋ฆฌ ๋ฐ ๋ฐ์ฌ๋ฆผ ๊ท์น์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
4. World ์ขํ
World ์ขํ๋ ๊ฒ์ ์ธ๊ณ ์์ ์์น๋ฅผ ๋ํ๋ ๋๋ค.
์:
- Map Tile
- Node
- Node Sprite
- World ์ขํ๋ฅผ ์ฌ์ฉํ๋ ๋ ๋๋ง ์์
Camera๊ฐ ํ์ฑํ๋๋ฉด ์ง์๋๋ World ์ขํ ๋ ๋๋ง์ด Camera ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณํ๋ฉ๋๋ค.
๋ฐ๋ผ์ Viewport์ ๊ฒ์ ์ธ๊ณ์ ๋ค๋ฅธ ์์ญ์ ํ์ํ ์ ์์ต๋๋ค.
5. Screen ์ขํ
Screen ์ขํ๋ Framebuffer ๋ด๋ถ์ ๊ณ ์ ๋ ์์น๋ฅผ ๋ํ๋ ๋๋ค.
์ขํ ๋ฒ์:
X: 0 to 63
Y: 0 to 63
์ผ๋ถ ๋ ๋๋ง ์์ ์ Screen ์ขํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์:
cls(0)
pix(32, 32, 7)
์ด๋ฌํ ์์ ์ Screen ์ขํ๋ฅผ ์ ์งํ๋ฉฐ Camera ์ด๋์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
UI๋ ํ๋ฉด Overlay๋ฅผ ๋ง๋ค ๋ ์ ์ฉํฉ๋๋ค.
6. World ์ขํ๋ฅผ Screen ์ขํ๋ก ๋ณํํ๊ธฐ
๊ฐ๋จํ Camera ๋ณํ ๊ณต์:
screen_x = world_x - camera_x + 32
screen_y = world_y - camera_y + 32
์:
World position: (100, 80)
Camera position: (100, 80)
Screen position: (32, 32)
Camera ์ค์ฌ์ ์๋ ๊ฐ์ฒด๋ ํ๋ฉด ์ค์ ๊ทผ์ฒ์ ํ์๋ฉ๋๋ค.
์ด ๊ณต์์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ค๋ช ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์ ํํ ํฝ์ ์์น๋ Runtime์ ์ ์ ์ขํ ์ฒ๋ฆฌ ๊ท์น์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
7. Active Camera ์ ํ
Map์๋ ์ฌ๋ฌ Camera๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
BIT8_CLI 0.1.0์ ๋ค์ ๊ท์น์ผ๋ก Active Camera๋ฅผ ์ ํํฉ๋๋ค.
ํ์ฑํ๋ Camera ์ค ID๊ฐ ๊ฐ์ฅ ์์ Camera๋ฅผ ์ ํํฉ๋๋ค.
์ด ๊ท์น์ ํตํด ์ฌ๋ฌ Camera๊ฐ ์กด์ฌํ๋๋ผ๋ ์ ํ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ ์ ์์ต๋๋ค.
์:
Camera ID 1 โ Disabled
Camera ID 2 โ Enabled
Camera ID 3 โ Enabled
Active Camera:
Camera ID 2
8. Camera์ Tile Rendering
Map Rendering์ World ์ขํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Camera๊ฐ ํ์ฑํ๋๋ฉด Map์ ํ์ํ World ์์ญ์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ ค์ง๋๋ค.
์:
func draw()
cls(0)
map()
end
Camera๋ 64ร64 Framebuffer ์์ ํ์๋๋ Map ์์ญ์ ๊ฒฐ์ ํฉ๋๋ค.
9. Camera์ Sprite
Node Sprite๋ World ์ขํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Camera๊ฐ ํ์ฑํ๋๋ฉด ์ง์๋๋ Sprite Rendering์ด Screen ์ขํ๋ก ๋ณํ๋ฉ๋๋ค.
์:
func draw()
self:spr()
end
Node์ World ์ขํ๋ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
Camera๋ Sprite๊ฐ ํ๋ฉด์ ํ์๋๋ ์์น์ ์ํฅ์ ์ค๋๋ค.
์์ธํ ๋ด์ฉ์ Sprites and Animation ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
10. Camera์ UI
๊ฒ์์์๋ ํน์ ๊ทธ๋ํฝ์ ํ๋ฉด์ ๊ณ ์ ๋ ์์น์ ํ์ํด์ผ ํ ์ ์์ต๋๋ค.
์:
- HP ํ์
- ์นด์ดํฐ
- ๋ฉ๋ด
- Screen Overlay
์ด๋ฌํ ์์์๋ Screen ์ขํ ๋ ๋๋ง์ด ์ ์ฉํฉ๋๋ค.
์:
func draw()
cls(0)
map()
pix(32, 32, 7)
end
์ฌ๊ธฐ์ pix()๋ ๊ณ ์ ๋ Screen ์ขํ์ ํฝ์
์ ๊ทธ๋ฆฝ๋๋ค.
Camera๋ ์ด ํฝ์ ์ ์์น๋ฅผ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
11. Camera ํธ์ง
BIT8_CLI์ VS Code Map Workspace๋ Camera ์๊ฐํ๋ฅผ ์ง์ํฉ๋๋ค.
๊ฐ๋ฐ์๋ Map์ ํธ์งํ๋ฉด์ Camera ์์น๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Camera ๋ฐ์ดํฐ๋ Map ํ๋ก์ ํธ ๋ฐ์ดํฐ์ ํฌํจ๋ฉ๋๋ค.
Runtime์ Active Camera๋ฅผ ์ ํํ๊ณ ์ ์ฉํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ Map Workspace ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
12. Camera์ Viewport ํฌ๊ธฐ
BIT8_CLI 0.1.0์ ๊ณ ์ ๋ Framebuffer ํด์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
64 ร 64 pixels
Camera๋ ํ์๋๋ World ์์ญ์ ๋ณ๊ฒฝํฉ๋๋ค.
Framebuffer ์์ฒด์ ํด์๋๋ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ Viewport๋ฅผ ํตํด ํฐ Map์ ํ์ํ ์ ์์ต๋๋ค.
13. ํ์ฌ ์ ํ ์ฌํญ
BIT8_CLI 0.1.0์ Camera ์์คํ ์ ์ฃผ๋ก ๋ค์ ๊ธฐ๋ฅ์ ์ค์ ์ ๋ก๋๋ค.
- Map ๋ฐ์ดํฐ์ ์ ์ฅ๋๋ Camera
- World ์ขํ ๋ ๋๋ง ์คํ์
- ๊ณ ์ ๋ 64ร64 Viewport
- ๊ฒฐ์ ์ ์ธ Active Camera ์ ํ
- Screen ์ขํ ๋ ๋๋ง
๊ณ ๊ธ Camera Effect, ์ํ์ Transition, ๋ฒ์ฉ Camera Script Framework๋ ํ๋ฆฝ๋ 0.1.0 ๊ธฐ๋ฅ์ ํฌํจ๋์ง ์์ต๋๋ค.
๋ค์ ๋จ๊ณ
Core Systems ๋ค์์๋ ๊ฐ๋ฐ ๋๊ตฌ ๋ฌธ์๊ฐ ์ด์ด์ง๋๋ค.
๊ด๋ จ ๋ฌธ์:
Map์ ์ธ๊ณ๋ฅผ ์ ์ํ๊ณ , Camera๋ ๋ฌด์์ ๋ณด์ฌ ์ค์ง ๊ฒฐ์ ํฉ๋๋ค.