HSP3.6β5HGIMG4 도미노 쓰러뜨리기

15319 단어 HSPHSP3
HSP3.6β5HGIMG4에서 gpbox 모형을 gppbind로 강성화할 때 이전에 지정한 setscale의 설정은 gpbox의 강체 모양에 반영됩니다.
덕분에 장방체 강체를 만들 수 있어 도미노 골패 골패 골패 골패 골패 골패 골패 골패 골패 골패 골패 골패 골패 골패를 실현할 수 있었다.
샘플 코드는 다음과 같습니다.
#include "hgimg4.as"
#define GRAVY (-9.8 * 3.0)
    gpreset
    setcls CLSMODE_SOLID, 0x000000
    setpos GPOBJ_CAMERA, 30,40,110
    gplookat GPOBJ_CAMERA, 0,2,0
    gosub *make
    repeat
        redraw 0
        gpdraw
        redraw 1
        await 1000/60
    loop

*make
    num = 10
    dist = 6
    offset_y = 10.0
    offset_x = -2.2
// 1段目
    fric = 1.0
    pong = 0.01
    col = 0x606060
    size = double(dist * num) * 0.5, 1.0, 4.0
    ps = size.0, 0.0 + offset_y, 0.0
    id = _box(size, ps, col, 0, fric, pong)
// 2段目
    ps = - double(dist * num) * 0.5 + offset_x, 0.0, 0.0
    id = _box(size, ps, col, 0, fric, pong)

    mass = 10.0
    size = 1.0, 4.0, 2.0
    fric = 0.2
    pong = 0.5
// キックピース
    col = 0xff0000
    ps = double(dist * (num - 1)) - 2.0, 2.0 + offset_y, 0.0
    gpbox id, 2.0, col
    setpos id, ps.0, ps.1, ps.2
    setscale id, size.0, size.1, size.2
    setang id, 0, 0, M_PI * 0.1
    gppbind id, mass, fric
    gppset id, GPPSET_FRICTION, fric, pong

    flup = 2
    mass = 2.0
    repeat num-2, 1 // 1グループ目
        r = (rnd(5 - flup) + flup) * 51
        g = (rnd(5 - flup) + flup) * 51
        b = (rnd(5 - flup) + flup) * 51
        col = (r << 16) | (g << 8) | b
        ps = double(dist * cnt), 2.0 + offset_y, 0.0
        id = _box(size, ps, col, mass, fric, pong)
    loop
    repeat num-1, 1 // 2グループ目
        r = (rnd(5 - flup) + flup) * 51
        g = (rnd(5 - flup) + flup) * 51
        b = (rnd(5 - flup) + flup) * 51
        col = (r << 16) | (g << 8) | b
        ps = offset_x - double(dist * cnt), 4.0, 0.0
        id = _box(size, ps, col, mass, fric, pong)
    loop
    return

// 直方体剛体を作成する
#defcfunc _box array _size, array _pos, int _col, double _mass, double _fric, double _pong, local _id
    gpbox _id, 2, _col
    setpos _id, _pos.0, _pos.1, _pos.2
    setscale _id, _size.0, _size.1, _size.2
    gppbind _id, _mass, _fric
    gppset _id, GPPSET_FRICTION, _fric, _pong
    gppset _id, GPPSET_DAMPING, 0.0, 0.0
    gppset _id, GPPSET_GRAVITY, 0.0, GRAVY, 0.0
    return _id
실행 결과 1

오른쪽 빨간색 도미노에서 쓰러지다
실행 결과2

퍼터
기본 중력값이면 조금 더딘 움직임이 느껴져 수치를 확대했다.

좋은 웹페이지 즐겨찾기