Repository navigation
Collision ja
English | ็น้ซไธญๆ | ๆฅๆฌ่ช | ํ๊ตญ์ด
BIT8_CLI ใฏใTile ใใผในใฎ 2D ใฒใผใ ๅใใซ่ปฝ้ใช Collision ใทในใใ ใๆไพใใพใใ
BIT8_CLI 0.1.0 ใงใฏใNode ใฏ Solid Tile ใจๅฏพๅฟใใ Collider ใใผใฟใไฝฟ็จใใฆ้ๅฎณ็ฉใๆคๅบใใ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 ใๆไฝใงใใพใใ
Tile ใฏ Asset Registry ใ้ใใฆ Solid ใซ่จญๅฎใงใใพใใ
Asset Registry ใฏๆฌกใฎใใกใคใซใซไฟๅญใใใพใใ
bit8.assets.toml
ไพ๏ผ
solid = [6]ใใใฏใๅฏพๅฟใใ Tilesheet ใฎ 6 ็ช็ฎใฎ Tile ใ Solid ใจใใฆๆๅฎใใพใใ
ใใฎใณใผใใฏ่จญๅฎใฎไธ้จๅใงใใใๅฎๅ จใช Registry ใใกใคใซใงใฏใใใพใใใ
Solid Tile ใฏ Collision ๅคๅฎใซใใใฆใ8ร8 ใใฏใปใซๅ จไฝใๅ ๆใใพใใ
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 ใใ็ดฐใใๅไฝใง็งปๅใงใใพใใ
Node ใซใฏไปปๆใฎ Collider ๆ ๅ ฑใ่จญๅฎใงใใพใใ
Collider ใฏ Node ใซ้ข้ฃไปใใใใ Collision Geometry ใๅฎ็พฉใใพใใ
Runtime ใฏใๅฏพๅฟใใ Collision Geometry ใซๅบใฅใใฆ็งปๅใๅคๅฎใงใใพใใ
Collider ใฎ่จญๅฎใฏ Node ใฎ Map ใใผใฟใจใจใใซไฟๅญใใใพใใ
ๅฏพๅฟใใ Collider ใใญใใใฃใจใใกใคใซๅฝขๅผใฎ่ฉณ็ดฐใซใคใใฆใฏใ0.1.0 ใฎๅฎ่ฃ ใ็ขบ่ชใใฆใใ ใใใ
็งปๅๆใฎ Collision ใ็ขบ่ชใใใซใฏใๆฌกใฎใกใฝใใใไฝฟ็จใใพใใ
self:collide(dx, dy)ไพ๏ผ
func update()
if self:collide(1, 0) then
-- ๅณๆนๅใธใฎ็งปๅใๅฆจใใใใฆใใพใใ
end
endๅผๆฐใฏใ็ขบ่ชใใใ็งปๅ้ใ่กจใใพใใ
ใใฎใกใฝใใใฏ Collision ใ็ขบ่ชใใใ ใใงใNode ใฎไฝ็ฝฎใๅคๆดใใพใใใ
Collision ใ่ๆ ฎใใฆ Node ใ็งปๅใใใใซใฏใๆฌกใฎใกใฝใใใไฝฟ็จใใพใใ
self:move(dx, dy)ไพ๏ผ
func update()
self:move(1, 0)
endใใฎใณใผใใฏ Node ใๅณใซ 1 ใใฏใปใซ็งปๅใใใใใจใใพใใ
Collision ใซใใฃใฆ็งปๅใๅฆจใใใใๅ ดๅใๅฎ้ใฎ็งปๅ้ใฏ่ฆๆฑใใๅคใใๅฐใใใชใใใจใใใใพใใ
BIT8_CLI 0.1.0 ใฏใ1 ใใฏใปใซใใคๆฎต้็ใซ Collision ใๅคๅฎใใพใใ
็งปๅใฏๆฌกใฎ้ ๅบใงๅฆ็ใใใพใใ
- X ่ปธ
- Y ่ปธ
ไพ๏ผ
self:move(3, 2)Runtime ใฏๆๅใซๆฐดๅนณๆนๅใฎ็งปๅใ่ฉฆใฟใใใฎๅพๅ็ดๆนๅใฎ็งปๅใๅฆ็ใใพใใ
ๅ่ปธใฎ็งปๅใฏใใใฏใปใซๅไฝใงๅคๅฎใใใพใใ
ใใฎๆนๅผใฏ่ปฝ้ใช Tile ใใผในใฎ็งปๅๅฆ็ใซ้ฉใใฆใใพใใ
2 ใคใฎใกใฝใใใซใฏ็ฐใชใๅฝนๅฒใใใใพใใ
| ใกใฝใใ | ็จ้ | ไฝ็ฝฎใฎๅคๆด |
|---|---|---|
self:collide(dx, dy) |
็งปๅๆใฎ Collision ใ็ขบ่ช | ใใชใ |
self:move(dx, dy) |
Collision ใ่ๆ ฎใใฆ็งปๅใ่ฉฆใฟใ | ็งปๅๅฏ่ฝใชๅ ดๅใซๅคๆด |
ๅ็ดใช็งปๅใงใฏใself:move() ใ ใใงๅๅใชๅ ดๅใใใใพใใ
้ๅฎณ็ฉใ็ขบ่ชใใฆใใใฒใผใ ๅ
ใฎๅไฝใๆฑบๅฎใใใๅ ดๅใฏใself:collide() ใไฝฟ็จใใพใใ
ๆฌกใฎไพใงใฏใๆนๅๅ ฅๅใฎๅฎๆฐใไฝฟ็จใใพใใ
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 ใซ้ข้ฃไปใใใใฆใใใใจใๅๆใจใใพใใ
Node ใฏๅบงๆจใ็ดๆฅๅคๆดใใใใจใใงใใพใใ
self.x = self.x + 1ใใ ใใๅบงๆจใฎ็ดๆฅๅคๆดใจๆฌกใฎใกใฝใใใฏ็ฐใชใใพใใ
self:move(1, 0)้ๅฎณ็ฉใซใใฃใฆ็งปๅใๅถ้ใใใๅ ดๅใฏใCollision ใ่ๆ ฎใใ็งปๅใไฝฟ็จใใฆใใ ใใใ
ๆๅณ็ใซ Node ใฎไฝ็ฝฎใๅคๆดใใๅ ดๅใฏใๅบงๆจใ็ดๆฅ่จญๅฎใงใใพใใ
Collision ใใผใฟใฏ Map ใจๅฏๆฅใซ้ขไฟใใฆใใพใใ
Map ใฏ Tile ใใผใฟใไฟๆใใAsset Registry ใฏ็ป้ฒๆธใฟ Tile ใฎใใกใใฉใใ Solid ใงใใใใๅฎ็พฉใใพใใ
Node ใฏ Collision Query ใ็งปๅๅฆ็ใงใใใใฎๆ ๅ ฑใไฝฟ็จใใพใใ
่ฉณใใใฏ Maps ใจ Assets and Tilesheets ใๅ็ งใใฆใใ ใใใ
BIT8_CLI 0.1.0 ใฏ่ปฝ้ใช Collision ใทในใใ ใๆไพใใพใใ
ๅฎๅ จใช Physics Engine ใงใฏใใใพใใใ
็พๅจใฎ Collision ใขใใซใซใฏใๆฌกใฎๆฉ่ฝใฏๅซใพใใฆใใพใใใ
- ๅฎๅ จใช Rigid Body Dynamics
- ็ฉ็ใจใณใธใณใซใใ่ชๅ้ๅใทใใฅใฌใผใทใงใณ
- ็พๅฎ็ใชๅใ้ๅ้ใฎ่จ็ฎ
- ๆฑ็จ็ฉ็ใใฌใผใ ใฏใผใฏใจใใฆใฎ้ซๅบฆใช Collision Shape
้็บ่ ใฏ Node Script ใไฝฟ็จใใฆใใฒใผใ ใซๅฟ ่ฆใช็งปๅๅฆ็ใๅฎ่ฃ ใงใใพใใ
ๆฌกใฎใใผใธ๏ผ
้ข้ฃใใญใฅใกใณใ๏ผ
Collision ใฏใNode ใใฉใใธ็งปๅใงใใใใๆฑบๅฎใใพใใ
Current Version: 0.1.0