Skip to content

Collision ja

Shiraishi_AKi edited this page Oct 6, 2026 · 1 revision

Collision ใ‚ทใ‚นใƒ†ใƒ 

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

BIT8_CLI ใฏใ€Tile ใƒ™ใƒผใ‚นใฎ 2D ใ‚ฒใƒผใƒ ๅ‘ใ‘ใซ่ปฝ้‡ใช Collision ใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆไพ›ใ—ใพใ™ใ€‚

BIT8_CLI 0.1.0 ใงใฏใ€Node ใฏ Solid Tile ใจๅฏพๅฟœใ™ใ‚‹ Collider ใƒ‡ใƒผใ‚ฟใ‚’ไฝฟ็”จใ—ใฆ้šœๅฎณ็‰ฉใ‚’ๆคœๅ‡บใ—ใ€Collision ใ‚’่€ƒๆ…ฎใ—ใŸ็งปๅ‹•ใ‚’ๅฎŸ่กŒใงใใพใ™ใ€‚

ใ“ใฎใ‚ทใ‚นใƒ†ใƒ ใฏใ€ๅฎŒๅ…จใช็‰ฉ็†ใ‚ทใƒŸใƒฅใƒฌใƒผใ‚ทใƒงใƒณใงใฏใชใใ€ใ‚ทใƒณใƒ—ใƒซใงไบˆๆธฌๅฏ่ƒฝใช็งปๅ‹•ๅ‡ฆ็†ใ‚’็›ฎ็š„ใจใ—ใฆใ„ใพใ™ใ€‚

1. Collision ใฎๆฆ‚่ฆ

Collision ใ‚ทใ‚นใƒ†ใƒ ใฏใ€ไธปใซๆฌกใฎ 3 ใคใฎ่ฆ็ด ใงๆง‹ๆˆใ•ใ‚Œใพใ™ใ€‚

  • Solid Tile๏ผš ็งปๅ‹•ใ‚’ๅฆจใ’ใ‚‹ Map Tile
  • Node Collider๏ผš Node ใซ้–ข้€ฃไป˜ใ‘ใ‚‰ใ‚ŒใŸไปปๆ„ใฎ Collision Geometry
  • Movement API๏ผš ็งปๅ‹•ใฎ็ขบ่ชใจๅฎŸ่กŒใซไฝฟ็”จใ™ใ‚‹ใƒกใ‚ฝใƒƒใƒ‰

ไธปใช Node ใƒกใ‚ฝใƒƒใƒ‰๏ผš

self:collide(dx, dy)
self:move(dx, dy)

ใ“ใ‚Œใ‚‰ใฎใƒกใ‚ฝใƒƒใƒ‰ใ‚’ไฝฟ็”จใ—ใฆใ€Node Script ใ‹ใ‚‰ Collision World ใ‚’ๆ“ไฝœใงใใพใ™ใ€‚

2. Solid Tile

Tile ใฏ Asset Registry ใ‚’้€šใ˜ใฆ Solid ใซ่จญๅฎšใงใใพใ™ใ€‚

Asset Registry ใฏๆฌกใฎใƒ•ใ‚กใ‚คใƒซใซไฟๅญ˜ใ•ใ‚Œใพใ™ใ€‚

bit8.assets.toml

ไพ‹๏ผš

solid = [6]

ใ“ใ‚Œใฏใ€ๅฏพๅฟœใ™ใ‚‹ Tilesheet ใฎ 6 ็•ช็›ฎใฎ Tile ใ‚’ Solid ใจใ—ใฆๆŒ‡ๅฎšใ—ใพใ™ใ€‚

ใ“ใฎใ‚ณใƒผใƒ‰ใฏ่จญๅฎšใฎไธ€้ƒจๅˆ†ใงใ‚ใ‚Šใ€ๅฎŒๅ…จใช Registry ใƒ•ใ‚กใ‚คใƒซใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚

Solid Tile ใฏ Collision ๅˆคๅฎšใซใŠใ„ใฆใ€8ร—8 ใƒ”ใ‚ฏใ‚ปใƒซๅ…จไฝ“ใ‚’ๅ ๆœ‰ใ—ใพใ™ใ€‚

3. Tile ๅบงๆจ™ใจ Collision

BIT8_CLI ใฏ 8ร—8 ใƒ”ใ‚ฏใ‚ปใƒซใฎ Tile ใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚

ไพ‹๏ผš

Tile (0, 0) โ†’ Pixels (0โ€“7, 0โ€“7)
Tile (1, 0) โ†’ Pixels (8โ€“15, 0โ€“7)
Tile (0, 1) โ†’ Pixels (0โ€“7, 8โ€“15)

Solid Tile ใฏใ€ใใฎ้ ˜ๅŸŸใ‚’้€š้Žใ™ใ‚‹็งปๅ‹•ใ‚’ๅฆจใ’ใพใ™ใ€‚

Node ใฎ็งปๅ‹•ใซใฏ World Pixel ๅบงๆจ™ใŒไฝฟ็”จใ•ใ‚Œใ‚‹ใŸใ‚ใ€Tile Grid ใ‚ˆใ‚Š็ดฐใ‹ใ„ๅ˜ไฝใง็งปๅ‹•ใงใใพใ™ใ€‚

4. Node Collider

Node ใซใฏไปปๆ„ใฎ Collider ๆƒ…ๅ ฑใ‚’่จญๅฎšใงใใพใ™ใ€‚

Collider ใฏ Node ใซ้–ข้€ฃไป˜ใ‘ใ‚‰ใ‚ŒใŸ Collision Geometry ใ‚’ๅฎš็พฉใ—ใพใ™ใ€‚

Runtime ใฏใ€ๅฏพๅฟœใ™ใ‚‹ Collision Geometry ใซๅŸบใฅใ„ใฆ็งปๅ‹•ใ‚’ๅˆคๅฎšใงใใพใ™ใ€‚

Collider ใฎ่จญๅฎšใฏ Node ใฎ Map ใƒ‡ใƒผใ‚ฟใจใจใ‚‚ใซไฟๅญ˜ใ•ใ‚Œใพใ™ใ€‚

ๅฏพๅฟœใ™ใ‚‹ Collider ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃใจใƒ•ใ‚กใ‚คใƒซๅฝขๅผใฎ่ฉณ็ดฐใซใคใ„ใฆใฏใ€0.1.0 ใฎๅฎŸ่ฃ…ใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

5. Collision ใฎ็ขบ่ช

็งปๅ‹•ๆ™‚ใฎ Collision ใ‚’็ขบ่ชใ™ใ‚‹ใซใฏใ€ๆฌกใฎใƒกใ‚ฝใƒƒใƒ‰ใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚

self:collide(dx, dy)

ไพ‹๏ผš

func update()
    if self:collide(1, 0) then
        -- ๅณๆ–นๅ‘ใธใฎ็งปๅ‹•ใŒๅฆจใ’ใ‚‰ใ‚Œใฆใ„ใพใ™ใ€‚
    end
end

ๅผ•ๆ•ฐใฏใ€็ขบ่ชใ—ใŸใ„็งปๅ‹•้‡ใ‚’่กจใ—ใพใ™ใ€‚

ใ“ใฎใƒกใ‚ฝใƒƒใƒ‰ใฏ Collision ใ‚’็ขบ่ชใ™ใ‚‹ใ ใ‘ใงใ€Node ใฎไฝ็ฝฎใ‚’ๅค‰ๆ›ดใ—ใพใ›ใ‚“ใ€‚

6. Collision ใ‚’่€ƒๆ…ฎใ—ใŸ็งปๅ‹•

Collision ใ‚’่€ƒๆ…ฎใ—ใฆ Node ใ‚’็งปๅ‹•ใ•ใ›ใ‚‹ใซใฏใ€ๆฌกใฎใƒกใ‚ฝใƒƒใƒ‰ใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚

self:move(dx, dy)

ไพ‹๏ผš

func update()
    self:move(1, 0)
end

ใ“ใฎใ‚ณใƒผใƒ‰ใฏ Node ใ‚’ๅณใซ 1 ใƒ”ใ‚ฏใ‚ปใƒซ็งปๅ‹•ใ•ใ›ใ‚ˆใ†ใจใ—ใพใ™ใ€‚

Collision ใซใ‚ˆใฃใฆ็งปๅ‹•ใŒๅฆจใ’ใ‚‰ใ‚ŒใŸๅ ดๅˆใ€ๅฎŸ้š›ใฎ็งปๅ‹•้‡ใฏ่ฆๆฑ‚ใ—ใŸๅ€คใ‚ˆใ‚Šๅฐใ•ใใชใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚

7. ็งปๅ‹•ใฎๅ‡ฆ็†้ †ๅบ

BIT8_CLI 0.1.0 ใฏใ€1 ใƒ”ใ‚ฏใ‚ปใƒซใšใคๆฎต้šŽ็š„ใซ Collision ใ‚’ๅˆคๅฎšใ—ใพใ™ใ€‚

็งปๅ‹•ใฏๆฌกใฎ้ †ๅบใงๅ‡ฆ็†ใ•ใ‚Œใพใ™ใ€‚

  1. X ่ปธ
  2. Y ่ปธ

ไพ‹๏ผš

self:move(3, 2)

Runtime ใฏๆœ€ๅˆใซๆฐดๅนณๆ–นๅ‘ใฎ็งปๅ‹•ใ‚’่ฉฆใฟใ€ใใฎๅพŒๅž‚็›ดๆ–นๅ‘ใฎ็งปๅ‹•ใ‚’ๅ‡ฆ็†ใ—ใพใ™ใ€‚

ๅ„่ปธใฎ็งปๅ‹•ใฏใ€ใƒ”ใ‚ฏใ‚ปใƒซๅ˜ไฝใงๅˆคๅฎšใ•ใ‚Œใพใ™ใ€‚

ใ“ใฎๆ–นๅผใฏ่ปฝ้‡ใช Tile ใƒ™ใƒผใ‚นใฎ็งปๅ‹•ๅ‡ฆ็†ใซ้ฉใ—ใฆใ„ใพใ™ใ€‚

8. Collision Query ใจ Movement

2 ใคใฎใƒกใ‚ฝใƒƒใƒ‰ใซใฏ็•ฐใชใ‚‹ๅฝนๅ‰ฒใŒใ‚ใ‚Šใพใ™ใ€‚

ใƒกใ‚ฝใƒƒใƒ‰ ็”จ้€” ไฝ็ฝฎใฎๅค‰ๆ›ด
self:collide(dx, dy) ็งปๅ‹•ๆ™‚ใฎ Collision ใ‚’็ขบ่ช ใ—ใชใ„
self:move(dx, dy) Collision ใ‚’่€ƒๆ…ฎใ—ใฆ็งปๅ‹•ใ‚’่ฉฆใฟใ‚‹ ็งปๅ‹•ๅฏ่ƒฝใชๅ ดๅˆใซๅค‰ๆ›ด

ๅ˜็ด”ใช็งปๅ‹•ใงใฏใ€self:move() ใ ใ‘ใงๅๅˆ†ใชๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚

้šœๅฎณ็‰ฉใ‚’็ขบ่ชใ—ใฆใ‹ใ‚‰ใ‚ฒใƒผใƒ ๅ†…ใฎๅ‹•ไฝœใ‚’ๆฑบๅฎšใ—ใŸใ„ๅ ดๅˆใฏใ€self:collide() ใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚

9. ใƒ—ใƒฌใ‚คใƒคใƒผ็งปๅ‹•ใฎไพ‹

ๆฌกใฎไพ‹ใงใฏใ€ๆ–นๅ‘ๅ…ฅๅŠ›ใฎๅฎšๆ•ฐใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚

func update()
    if btn(LEFT) then
        self:move(-1, 0)
    end

    if btn(RIGHT) then
        self:move(1, 0)
    end

    if btn(UP) then
        self:move(0, -1)
    end

    if btn(DOWN) then
        self:move(0, 1)
    end
end

ใ“ใฎใ‚ณใƒผใƒ‰ใฏใ€4 ๆ–นๅ‘ใธใฎๅŸบๆœฌ็š„ใช Collision ๅฏพๅฟœ็งปๅ‹•ใ‚’ๅฎŸ่ฃ…ใ—ใพใ™ใ€‚

ใ“ใฎไพ‹ใงใฏใ€Script ใŒ้ฉๅˆ‡ใช Collision ่จญๅฎšใ‚’ๆŒใค Node ใซ้–ข้€ฃไป˜ใ‘ใ‚‰ใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’ๅ‰ๆใจใ—ใพใ™ใ€‚

10. ๅบงๆจ™ใฎ็›ดๆŽฅๅค‰ๆ›ด

Node ใฏๅบงๆจ™ใ‚’็›ดๆŽฅๅค‰ๆ›ดใ™ใ‚‹ใ“ใจใ‚‚ใงใใพใ™ใ€‚

self.x = self.x + 1

ใŸใ ใ—ใ€ๅบงๆจ™ใฎ็›ดๆŽฅๅค‰ๆ›ดใจๆฌกใฎใƒกใ‚ฝใƒƒใƒ‰ใฏ็•ฐใชใ‚Šใพใ™ใ€‚

self:move(1, 0)

้šœๅฎณ็‰ฉใซใ‚ˆใฃใฆ็งปๅ‹•ใ‚’ๅˆถ้™ใ—ใŸใ„ๅ ดๅˆใฏใ€Collision ใ‚’่€ƒๆ…ฎใ—ใŸ็งปๅ‹•ใ‚’ไฝฟ็”จใ—ใฆใใ ใ•ใ„ใ€‚

ๆ„ๅ›ณ็š„ใซ Node ใฎไฝ็ฝฎใ‚’ๅค‰ๆ›ดใ™ใ‚‹ๅ ดๅˆใฏใ€ๅบงๆจ™ใ‚’็›ดๆŽฅ่จญๅฎšใงใใพใ™ใ€‚

11. Collision ใจ Map

Collision ใƒ‡ใƒผใ‚ฟใฏ Map ใจๅฏ†ๆŽฅใซ้–ขไฟ‚ใ—ใฆใ„ใพใ™ใ€‚

Map ใฏ Tile ใƒ‡ใƒผใ‚ฟใ‚’ไฟๆŒใ—ใ€Asset Registry ใฏ็™ป้Œฒๆธˆใฟ Tile ใฎใ†ใกใ€ใฉใ‚ŒใŒ Solid ใงใ‚ใ‚‹ใ‹ใ‚’ๅฎš็พฉใ—ใพใ™ใ€‚

Node ใฏ Collision Query ใ‚„็งปๅ‹•ๅ‡ฆ็†ใงใ“ใ‚Œใ‚‰ใฎๆƒ…ๅ ฑใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚

่ฉณใ—ใใฏ Maps ใจ Assets and Tilesheets ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚

12. ็พๅœจใฎๅˆถ้™

BIT8_CLI 0.1.0 ใฏ่ปฝ้‡ใช Collision ใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆไพ›ใ—ใพใ™ใ€‚

ๅฎŒๅ…จใช Physics Engine ใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚

็พๅœจใฎ Collision ใƒขใƒ‡ใƒซใซใฏใ€ๆฌกใฎๆฉŸ่ƒฝใฏๅซใพใ‚Œใฆใ„ใพใ›ใ‚“ใ€‚

  • ๅฎŒๅ…จใช Rigid Body Dynamics
  • ็‰ฉ็†ใ‚จใƒณใ‚ธใƒณใซใ‚ˆใ‚‹่‡ชๅ‹•้‡ๅŠ›ใ‚ทใƒŸใƒฅใƒฌใƒผใ‚ทใƒงใƒณ
  • ็พๅฎŸ็š„ใชๅŠ›ใ‚„้‹ๅ‹•้‡ใฎ่จˆ็ฎ—
  • ๆฑŽ็”จ็‰ฉ็†ใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใจใ—ใฆใฎ้ซ˜ๅบฆใช Collision Shape

้–‹็™บ่€…ใฏ Node Script ใ‚’ไฝฟ็”จใ—ใฆใ€ใ‚ฒใƒผใƒ ใซๅฟ…่ฆใช็งปๅ‹•ๅ‡ฆ็†ใ‚’ๅฎŸ่ฃ…ใงใใพใ™ใ€‚

ๆฌกใธ

ๆฌกใฎใƒšใƒผใ‚ธ๏ผš

Camera

้–ข้€ฃใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ๏ผš

Collision ใฏใ€Node ใŒใฉใ“ใธ็งปๅ‹•ใงใใ‚‹ใ‹ใ‚’ๆฑบๅฎšใ—ใพใ™ใ€‚

Clone this wiki locally