Skip to content

Camera zh TW

Shiraishi_AKi edited this page Oct 6, 2026 · 1 revision

Camera ๆ”ๅฝฑๆฉŸ็ณป็ตฑ

English | ็น้ซ”ไธญๆ–‡ | ๆ—ฅๆœฌ่ชž | ํ•œ๊ตญ์–ด

BIT8_CLI ๆไพ› Camera ็ณป็ตฑ๏ผŒ็”จไพ†ๆŽงๅˆถ้Šๆˆฒไธ–็•Œไธญๅ“ชไบ›ๅ€ๅŸŸๆœƒ้กฏ็คบๅœจ็•ซ้ขไธŠใ€‚

ๅœจ BIT8_CLI 0.1.0 ไธญ๏ผŒCamera ่ˆ‡ Map ่ณ‡ๆ–™้—œ่ฏ๏ผŒไธฆๅฝฑ้Ÿฟไธ–็•Œๅบงๆจ™็š„็นช่ฃฝใ€‚

้Šๆˆฒไฝฟ็”จๅ›บๅฎš็š„ 64 ร— 64 ๅƒ็ด  Viewportใ€‚

1. Camera ๆฆ‚่ฟฐ

Camera ๅฎš็พฉ้Šๆˆฒไธ–็•Œไธญๅฏ่ฆ–็ฏ„ๅœ็š„ไธญๅฟƒใ€‚

Framebuffer ่งฃๆžๅบฆๅ›บๅฎš็‚บ๏ผš

64 ร— 64 pixels

Map ๅฏไปฅ้ ๅคงๆ–ผ Viewportใ€‚

Camera ่ฒ ่ฒฌๆฑบๅฎš้€™ๅ€‹ๅคงๅž‹ไธ–็•Œไธญ็š„ๅ“ชๅ€‹ๅ€ๅŸŸๆœƒๅ‡บ็พๅœจ็•ซ้ขไธŠใ€‚

2. Camera ่ˆ‡ Map

Camera ่ณ‡ๆ–™ๅ„ฒๅญ˜ๅœจ Map ็ณป็ตฑไธญใ€‚

.b8map ๅฏไปฅๅŒ…ๅซ๏ผš

  • Tile ่ณ‡ๆ–™
  • Node
  • Camera

Camera ่ฎ“ Runtime ๅฏไปฅๅœจไธๆ”น่ฎŠ Framebuffer ่งฃๆžๅบฆ็š„ๆƒ…ๆณไธ‹๏ผŒ้กฏ็คบ Map ็š„ไธๅŒๅ€ๅŸŸใ€‚

่ฉณ็ดฐ่ณ‡่จŠ่ซ‹้–ฑ่ฎ€ Mapใ€‚

3. Camera ไฝ็ฝฎ

Camera ๆ“ๆœ‰ไธ–็•Œๅบงๆจ™ไฝ็ฝฎใ€‚

้€™ๅ€‹ไฝ็ฝฎไปฃ่กจ Viewport ็š„ไธญๅฟƒใ€‚

ไพ‹ๅฆ‚๏ผš

Camera position: (100, 80)
Viewport size:   64 ร— 64

ๆฆ‚ๅฟตไธŠ๏ผŒๅฏ่ฆ–็ฏ„ๅœๆœƒๅพž Camera ไธญๅฟƒๅ‘ๅ››ๅ€‹ๆ–นๅ‘ๅปถไผธ็ด„ 32 ๅƒ็ด ใ€‚

ๅ› ๆญค๏ผŒ็ด„็•ฅ็š„ๅฏ่ฆ–็ฏ„ๅœๆ˜ฏ๏ผš

X: 68 to 131
Y: 48 to 111

ๅฏฆ้š›ๅƒ็ด ้‚Š็•Œๅ–ๆฑบๆ–ผ Runtime ็š„ๅบงๆจ™่ˆ‡ๅ–ๆ•ด่ฆๅ‰‡ใ€‚

4. ไธ–็•Œๅบงๆจ™

World Coordinates ็”จไพ†ๆ่ฟฐ้Šๆˆฒไธ–็•Œไธญ็š„ไฝ็ฝฎใ€‚

ไพ‹ๅฆ‚๏ผš

  • Map Tile
  • Node
  • Node Sprite
  • ไฝฟ็”จไธ–็•Œๅบงๆจ™็š„็นช่ฃฝๆ“ไฝœ

็•ถ Camera ๅ•Ÿ็”จๆ™‚๏ผŒๆ”ฏๆดไธ–็•Œๅบงๆจ™็š„็นช่ฃฝๆ“ไฝœๆœƒไพ็…ง Camera ไฝ็ฝฎ้€ฒ่กŒ่ฝ‰ๆ›ใ€‚

ๅ› ๆญค๏ผŒViewport ๅฏไปฅ้กฏ็คบ้Šๆˆฒไธ–็•Œ็š„ไธๅŒๅ€ๅŸŸใ€‚

5. ่žขๅน•ๅบงๆจ™

Screen Coordinates ็”จไพ†ๆ่ฟฐ Framebuffer ๅ…ง็š„ๅ›บๅฎšไฝ็ฝฎใ€‚

่žขๅน•ๅบงๆจ™็ฏ„ๅœ๏ผš

X: 0 to 63
Y: 0 to 63

้ƒจๅˆ†็นช่ฃฝๆ“ไฝœไฝฟ็”จ Screen Coordinatesใ€‚

ไพ‹ๅฆ‚๏ผš

cls(0)
pix(32, 32, 7)

้€™ไบ›ๆ“ไฝœ็ถญๆŒไฝฟ็”จ่žขๅน•ๅบงๆจ™๏ผŒไธๆœƒๅ—ๅˆฐ Camera ไฝ็งปๅฝฑ้Ÿฟใ€‚

้€™ๅฐ UI ๅ’Œ็•ซ้ข่ฆ†่“‹ๅ…ƒ็ด ๅพˆๆœ‰ๅนซๅŠฉใ€‚

6. ไธ–็•Œๅบงๆจ™่ฝ‰ๆ›็‚บ่žขๅน•ๅบงๆจ™

็ฐกๅŒ–็š„ 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๏ผš

้ธๆ“‡ๅทฒๅ•Ÿ็”จไธ” 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 ไฝฟ็”จไธ–็•Œๅบงๆจ™ใ€‚

็•ถ Camera ๅ•Ÿ็”จๆ™‚๏ผŒMap ๆœƒไพ็…งๅฏ่ฆ–ไธ–็•Œๅ€ๅŸŸ้€ฒ่กŒ็นช่ฃฝใ€‚

ไพ‹ๅฆ‚๏ผš

func draw()
    cls(0)
    map()
end

Camera ๆœƒๆฑบๅฎš Map ็š„ๅ“ชๅ€‹้ƒจๅˆ†ๅ‡บ็พๅœจ 64ร—64 Framebuffer ไธญใ€‚

9. Camera ่ˆ‡ Sprite

Node Sprite ไฝฟ็”จไธ–็•Œๅบงๆจ™ใ€‚

็•ถ Camera ๅ•Ÿ็”จๆ™‚๏ผŒๆ”ฏๆด็š„ Sprite Rendering ๆœƒ่ฝ‰ๆ›ๆˆ่žขๅน•ๅบงๆจ™ใ€‚

ไพ‹ๅฆ‚๏ผš

func draw()
    self:spr()
end

Node ไป็„ถไฟ็•™่‡ชๅทฑ็š„ไธ–็•Œๅบงๆจ™ใ€‚

Camera ๅชๆœƒๅฝฑ้Ÿฟ Sprite ๆœ€็ต‚้กฏ็คบๅœจ็•ซ้ขไธŠ็š„ไฝ็ฝฎใ€‚

่ฉณ็ดฐ่ณ‡่จŠ่ซ‹้–ฑ่ฎ€ Sprite ่ˆ‡ Animationใ€‚

10. Camera ่ˆ‡ UI

้Šๆˆฒๅฏ่ƒฝ้œ€่ฆๅ›บๅฎšๅœจ็•ซ้ขไธŠ็š„ๅœ–ๅƒใ€‚

ไพ‹ๅฆ‚๏ผš

  • ่ก€้‡้กฏ็คบ
  • ่จˆๆ•ธๅ™จ
  • ้ธๅ–ฎ
  • ็•ซ้ข่ฆ†่“‹ๅ…ƒ็ด 

Screen-space Drawing ๅพˆ้ฉๅˆ็”จไพ†่ฃฝไฝœ้€™ไบ›ๅ…งๅฎนใ€‚

ไพ‹ๅฆ‚๏ผš

func draw()
    cls(0)
    map()

    pix(32, 32, 7)
end

้€™่ฃก็š„ pix() ๆœƒๅœจๅ›บๅฎš็š„่žขๅน•ๅบงๆจ™็นช่ฃฝๅƒ็ด ใ€‚

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 ๆ”น่ฎŠ็š„ๆ˜ฏๅฏ่ฆ–ไธ–็•Œๅ€ๅŸŸใ€‚

ๅฎƒไธๆœƒๆ”น่ฎŠ Framebuffer ็š„ๅฏฆ้š›่งฃๆžๅบฆใ€‚

ๅ› ๆญค๏ผŒๅฏไปฅ้€้Žๅฐๅž‹ Viewport ๆŽข็ดขๅคงๅž‹ Mapใ€‚

13. ็›ฎๅ‰้™ๅˆถ

BIT8_CLI 0.1.0 ็š„ Camera ็ณป็ตฑไธป่ฆๅŒ…ๅซ๏ผš

  • ๅ„ฒๅญ˜ๅœจ Map ไธญ็š„ Camera ่ณ‡ๆ–™
  • ไธ–็•Œๅบงๆจ™็นช่ฃฝไฝ็งป
  • ๅ›บๅฎš 64ร—64 Viewport
  • ๅฏ้ ๆธฌ็š„ Active Camera ้ธๆ“‡
  • ่žขๅน•ๅบงๆจ™็นช่ฃฝๆ“ไฝœ

้€ฒ้šŽ Camera ็‰นๆ•ˆใ€้›ปๅฝฑๅผ่ฝ‰ๅ ด๏ผŒไปฅๅŠ้€š็”จ Camera Script Framework๏ผŒๅฐšไธๅฑฌๆ–ผๅทฒ็ขบ็ซ‹็š„ 0.1.0 ๅŠŸ่ƒฝใ€‚

ไธ‹ไธ€ๆญฅ

Core Systems ๆ–‡ไปถๅทฒๅฎŒๆˆ๏ผŒๆŽฅไธ‹ไพ†ๆ˜ฏ้–‹็™ผๅทฅๅ…ทใ€‚

CLI Reference

็›ธ้—œๆ–‡ไปถ๏ผš

Map ๅฎš็พฉไธ–็•Œ๏ผŒCamera ๆฑบๅฎšไฝ ็œ‹่ฆ‹ไป€้บผใ€‚

Clone this wiki locally