ゲームを作りたい人のための ソースコード集

私がその日作った短めのソースを簡単な解説とともに載せていきます
ゲーム制作初心者にとって参考になるかもしれないソースが多いです


<< 文字列の計算式 | main | 判別分析法 >>



キャラクターアニメーション(DirectX)

HSPの拡張プラグイン「hgimg3」を用いて作成した、ただ歩き回るだけのオブジェクトです

マウスの左ボタンを押すことでオブジェクトの数を増やすことができます

 

 

#include "hgimg3.as"
hgini

#const patnum 16
#const csz 32

oncmd gosub *wm_lbuttondown, $201    ;マウスの左クリックされた時

buffer 2,csz,csz*patnum
;アニメーション画像作成
boxf
x=0:y=0:deg=0
repeat patnum
    color 255,,255:circle x+1,y+9,x+csz-1,y+csz-9
    color ,,255:circle x+7,y+7,x+csz-7,y+csz-7
    rad=deg2rad(deg)
    color 255
    circle 0,y+csz/2-sin(rad)*16,4,y+csz/2+sin(rad)*4
    circle csz-5,y+csz/2+sin(rad)*16,csz,y+csz/2-sin(rad)*4
    y+csz:deg+(360/16)
loop
setuv 0,0,csz-1,csz-1    ;登録テクスチャUV座標を指定
addspr sp0,1    ;2Dスプライトモデルを作成
settex csz,csz,0,-1    ;テクスチャを登録
;イベント作成
newevent evid    ;イベントリストを作成
repeat patnum
    event_uv evid,0,cnt*csz    ;UV設定イベントを追加
    event_prmon evid,PRMSET_MODE,OBJ_MOVE|OBJ_XFRONT    ;パラメータービット設定イベントを追加
    event_wait evid,1    ;ウェイト
loop
event_jump  evid,0    ;イベントの最初に戻る
;処理開始
screen 0
dim objiddt,1000:objfcsid=0
gosub *wm_lbuttondown
*main
    hgdraw:hgsync 17
    repeat objfcsid
        getposi objiddt(cnt),x,y,z
        if x<=-128&y<=-128{
            setpos objiddt(cnt),-128,-128        ;再配置
            setdir objiddt(cnt),(0.01*rnd(20)+0.9),0,0    ;移動量設定
            setang objiddt(cnt),0,0,deg2rad(90)    ;画像回転
        }else:if x>=128&y<=-128{
            setpos objiddt(cnt),128,-128
            setdir objiddt(cnt),0,(0.01*rnd(20)+0.9),0
            setang objiddt(cnt),0,0,deg2rad(180)
        }else:if x>=128&y>=128{
            setpos objiddt(cnt),128,128
            setdir objiddt(cnt),-(0.01*rnd(20)+0.9),0,0
            setang objiddt(cnt),0,0,deg2rad(270)
        }else:if x<=-128&y>=128{
            setpos objiddt(cnt),-128,128
            setdir objiddt(cnt),0,-(0.01*rnd(20)+0.9),0
            setang objiddt(cnt),0,0,deg2rad(0)
        }
    loop
    goto *main
*wm_lbuttondown    ;マウスを左クリックでオブジェクト生成
    if objfcsid<length(objiddt){
        regobj objiddt(objfcsid),sp0    ;オブジェクトの登録
        setevent objiddt(objfcsid),evid ;イベントセット
        setpos objiddt(objfcsid),-csz*4,csz*4
        setdir objiddt(objfcsid),0,-(0.01*rnd(20)+0.9),0
        objfcsid++
    }
    return

0
    posted by higashijugem 23:18comments(0)|-|


    この記事に対するコメント