HSP3.5HGIMG4에서 강체를 Kinetic(강제 지정) 모드로 설정합니다.
HGIMG4에서는 3차원 물리 연산 강체를 사용할 수 있지만 gppbind에서 3D 대상을 3D 물리 연산 강체로 지정하면 setpos 등에서 이동할 수 없고 3D 물리 연산에 따라 이동 회전이 발생한다.
근데 gpset에서 GPSET.KINEMATIC에서 x 성분에 1.0을 지정하여 물리 연산 강체를 강제 지정 모드로 변경할 수 있습니다.
주의해야 할 것은 이런 방법으로 이동할 때 품질을 0.0으로 할 수 없다는 것이다.
이 관건적인 모델을 이용하여 동전 투입식 추진기를 만들어 보았다.
다음은 샘플 코드입니다.
#include "hgimg4.as"
randomize
gpreset
setcls CLSMODE_SOLID, 0x000000
whole_size = 32
whole_half = whole_size / 2
height_size = 2
height_half = height_size / 2
div_num = 4
box_size = whole_size / div_num
box_half = box_size / 2
setborder whole_size * 2.0, whole_size * 2.0, whole_size * 2.0
// 前後移動イベント
dim evs, 2
foreach evs
frs = 157, 163
vel = double(box_size) / double(frs.cnt)
newevent ev
event_addpos ev, 0,0, - vel
event_wait ev, frs.cnt
event_addpos ev, 0,0, vel
event_wait ev, frs.cnt
event_jump ev, 0
evs.cnt = ev
loop
// プッシャー
repeat 2
i = cnt
cols = 0x00ccff, 0x006699
col = cols.i
repeat div_num
j = cnt
repeat 3
k = cnt
gpbox id, box_size, col
x = (j * 2 - div_num / 2 - 1) * box_size / 2
y = box_half * (1 - i)
z = box_half * (-1 + i*2 - k*2)
setpos id, x, y, z
gppbind id, 1,2
gppset id, GPPSET_KINEMATIC, 1
setevent id, evs.i
loop
loop
loop
// 黄色い箱
repeat 200
gpbox id, 2, 0xcccc00
setpos id, rnd(7) - 3, whole_size / 2, rnd(7) - 3
setobjmode id, OBJ_BORDER, 0
gppbind id, 1, 2
gppset id, GPPSET_DAMPING, 0,0
loop
// 床壁
gpfloor id, whole_size, whole_size, 0x006699
gppbind id, 0
repeat 3
xs = -whole_half, 0, whole_half
y = whole_half / 2
zs = 0, -whole_half, 0
ws = whole_size/2, whole_size, whole_size/2
hs = whole_size, whole_size/2, whole_size
rx = 0
ry = 0
rz = 0
if cnt == 0 {
rz = -64
}
if cnt == 1 {
rx = 64
}
if cnt == 2 {
rz = 64
}
gpfloor id, ws.cnt, hs.cnt, 0x339966
setpos id, xs.cnt, y, zs.cnt
setangr id, rx,ry,rz
gppbind id, 0
loop
// ライトとカメラ
setangr GPOBJ_LIGHT, -16, -32,0
setpos GPOBJ_CAMERA, 10, 20, 50
gplookat GPOBJ_CAMERA, 0, 5, 0
repeat
getreq fps, SYSREQ_FPS
stick key
if key & 256 {
gpbox id, 2, 0xcccc00
setpos id, rnd(25)-12, whole_half, -whole_half
setobjmode id, OBJ_BORDER, 0
gppbind id, 1, 2
gppset id, GPPSET_DAMPING, 0,0
}
redraw 0
gpdraw
pos 16,16
color 224,224,224
font "",48
mes strf("%2d [fps]", fps)
redraw 1
await 1000/60
loop
실행 결과 1노란색 상자는 동전 대신 동전을 넣는 유리종이이다
실행 결과2
좌클릭으로 노란 상자 추가
추진기를 키모드로 설정해 활동 중 앞뒤로 이동하고, 동전 대신 상자는 통상적인 3D 물리 연산으로 동작을 결정한다.
현재 gpbox는 모든 변의 길이가 같은 입방체만 생성할 수 있기 때문에 입방체를 여러 개로 배열하여 각 단계의 폭포를 실현하였다.나는 장방체와 그 모양의 강체를 만들 수 있다면 더욱 편리할 것이라고 생각한다.다음 버전 업그레이드 시 추가가 기대됩니다.
참고 자료
HSP3.5hgimg4를 기초로 이해하고 싶은 분들은 다음과 같은 기사를 추천합니다.
Reference
이 문제에 관하여(HSP3.5HGIMG4에서 강체를 Kinetic(강제 지정) 모드로 설정합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hta393939/items/a8b2d88655f9c14b1001텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)