アクションつくってみる0
投稿者: rurun9 投稿日:2012/03/29 18:12
ハイ、こんにちわー。
今日からノベル型でテキトーになんかを勢いで作っていこうと思います
スクリプトの書き方やら何やらは
・スクリプト/つくってみよう0
を見て覚えて下さい
まずは画像を用意しましょー
自分で描いてると日が暮れるので、公開素材を借りる事にします
Rmakeと言えばtomato様の作品が有名ですよねー
そこからキャラを借りて「お、新作か」て思わせる便乗作戦を(ォィ)
例えばコレなんか良さそうかなー?
必要なキャラ画像は
・プレイヤーキャラ
・武器
・敵
・敵の弾
・床
でしょうか…
とりあえず集めたらこんな感じ
一応、素材はそれぞれクリップしてあるけれど、スプライト表示に使う素画像は「一枚絵」で登録してある画像しか使用できないので、別個につくる事になります
画面をプリントスクリーン(キーボードのファンクションキーFNまたはALTを押しながらPRTSCで全画面を画像としてコピー)して欲しい部分を切り取り、並べたのをアップロードしました
ファイルサイズを小さくする為にパレットを16色に絞って、見えてないけど背景(0,255,255)を透明色設定してあります
ひとつの絵は32*32,アニメーションは2枚ずつなので交互に表示すれば良いかな
武器も敵の弾も丸いのにしたので、今回は撃った弾が画面外まで飛んでくロックマン風にしますか
操作はマウスのみ、クリックでジャンプ
弾は自動で撃ちまくる感じで。
では早速ノベルゲームを新規作成、高速モードにチェック入れます
次にシーンを新規作成
シーンのリソースエディタ「画像」に、さっきの素画像を登録
(この画面から新たにファイルをアップロードするなら「新規作成」
自分で用意した素材は「追加」
他人のを借りる場合は「クリップから追加」です)
「エディタに移動する」からスクリプト書きに突入
とりあえずスプライトを作成して位置と状態をセット
素材は32*32と小さいので、宇宙人は縦横2倍の64*64に拡大しますた
弾は32*32のまま、動きを調整してる間はh[5]を床にしてみます
スプライトは配列で並べておいて、番号で管理
使う変数としてはとりあえず
・表示番号 h … 0=宇宙人, 1~4=弾, 5~=敵その他
・位置(x,y)
・状態や向きなど j
くらいでしょうか
とりあえず表示して動くようにしてみた
マウスカーソルがキャラより右にあれば右に歩き、
カーソルが左にあれば左に歩く
弾は自動で飛ぶ(4個)
今日はここまで。次回はジャンプと落下と着地(壁衝突判定)
ツイート
今日からノベル型でテキトーになんかを勢いで作っていこうと思います
スクリプトの書き方やら何やらは
・スクリプト/つくってみよう0
を見て覚えて下さい
まずは画像を用意しましょー
自分で描いてると日が暮れるので、公開素材を借りる事にします
Rmakeと言えばtomato様の作品が有名ですよねー
そこからキャラを借りて「お、新作か」て思わせる便乗作戦を(ォィ)
例えばコレなんか良さそうかなー?
必要なキャラ画像は
・プレイヤーキャラ
・武器
・敵
・敵の弾
・床
でしょうか…
とりあえず集めたらこんな感じ
一応、素材はそれぞれクリップしてあるけれど、スプライト表示に使う素画像は「一枚絵」で登録してある画像しか使用できないので、別個につくる事になります
画面をプリントスクリーン(キーボードのファンクションキーFNまたはALTを押しながらPRTSCで全画面を画像としてコピー)して欲しい部分を切り取り、並べたのをアップロードしました
ファイルサイズを小さくする為にパレットを16色に絞って、見えてないけど背景(0,255,255)を透明色設定してあります
ひとつの絵は32*32,アニメーションは2枚ずつなので交互に表示すれば良いかな
武器も敵の弾も丸いのにしたので、今回は撃った弾が画面外まで飛んでくロックマン風にしますか
操作はマウスのみ、クリックでジャンプ
弾は自動で撃ちまくる感じで。
では早速ノベルゲームを新規作成、高速モードにチェック入れます
次にシーンを新規作成
シーンのリソースエディタ「画像」に、さっきの素画像を登録
(この画面から新たにファイルをアップロードするなら「新規作成」
自分で用意した素材は「追加」
他人のを借りる場合は「クリップから追加」です)
「エディタに移動する」からスクリプト書きに突入
#◆◆◆chapter0 setVariable("e",117763) #スプライト用の素画像番号 def sv(a,b) setVariable(a,b) end def gv(a) return getVariable(a) end #◆スプライトの作成 deleteAllSprite(); drawCanvas() #最初に使う前にキャンバスをキレイにしておく sv("h",createArray()) #スプライト表示番号 0=宇宙人, 1~4=弾, 5~=敵&敵弾&床など n=0 while n<=5 gv("h")[n]=createSprite(gv("e")) n=n+1 end setSpriteRect(gv("h")[0], 0,0,32,32, -32,-32,64,64) #宇宙人 setSpriteZOrder(gv("h")[0], 2) n=1 while n<=4 setSpriteRect(gv("h")[n], 0,96,32,32, -16,-16,32,32) #弾 setSpriteZOrder(gv("h")[n], 1) n=n+1 end setSpriteRect(gv("h")[5], 96,96,1,1, 0,0,800,32) #床 #◆初期値の設定 sv("x",createArray()); sv("y",createArray()) #スプライトの位置(x,y) sv("j",createArray()) #スプライトの状態、向きや種類の番号を入れる gv("x")[0]=400; gv("y")[0]=400 gv("j")[0]=0 #正面向き n=1 while n<=4 gv("x")[n]=0; gv("y")[n]=640 #弾は最初、見えない位置に置く gv("j")[n]=0 #弾が出ていない n=n+1 end gv("x")[5]=0; gv("y")[5]=400+32 #床位置 n=0 while n<=5 setSpritePosition(gv("h")[n], gv("x")[n],gv("y")[n]) #それぞれを位置(x,y)に配置 n=n+1 end drawCanvas() #スプライトを載せたキャンバスを更新 setCanvasVisible(true) #【重要】キャンバスを見えるようにしている
素材は32*32と小さいので、宇宙人は縦横2倍の64*64に拡大しますた
弾は32*32のまま、動きを調整してる間はh[5]を床にしてみます
スプライトは配列で並べておいて、番号で管理
使う変数としてはとりあえず
・表示番号 h … 0=宇宙人, 1~4=弾, 5~=敵その他
・位置(x,y)
・状態や向きなど j
くらいでしょうか
#◆◆◆chapter1 p=createArray(); p[0]=400; p[1]=300 #マウス位置用、最初は画面ド真ん中という事にしておく anime=0 #アニメ用カウント tama=0 #何番の弾を出すか startInput() #入力受付 key=true while key while hasInput() takeInput() if isMouseMove() p=getMousePosition() elsif isMouseDown() #ジャンプしたい elsif isKeyUp("ESC") key=false end end #hasInput終 #プレイヤーキャラ宇宙人の表示 if p[0]<gv("x")[0]-32 gv("x")[0]=gv("x")[0]-4; gv("j")[0]=1 #左向き if gv("x")[0]<32+16 gv("x")[0]=32+16 #画面端めり込み防止 end elsif gv("x")[0]+32<p[0] gv("x")[0]=gv("x")[0]+4; gv("j")[0]=2 #右向き if 800-32-16<gv("x")[0] gv("x")[0]=800-32-16 #画面端めり込み防止 end else gv("j")[0]=0 #正面向き end anime=anime+1 #アニメカウントが一定になったら絵を切り替える if anime==6 setSpriteRect(gv("h")[0], 32,gv("j")[0]*32,32,32, -32,-32,64,64) elsif anime==12 setSpriteRect(gv("h")[0], 0,gv("j")[0]*32,32,32, -32,-32,64,64) anime=0; tama=tama+1 if tama==5 tama=1 #弾番号は1~4 end if gv("j")[tama]==0 #弾状態が0つまり出てない場合は、宇宙人の位置から出る gv("x")[tama]=gv("x")[0]; gv("y")[tama]=gv("y")[0] case gv("j")[0] #宇宙人の向きによって弾の飛ぶ方向が決まる when 0 gv("j")[tama]=3 when 1 gv("j")[tama]=1 when 2 gv("j")[tama]=2 end #case終 end end setSpritePosition(gv("h")[0], gv("x")[0], gv("y")[0]) #宇宙人位置更新 n=1 while n<=4 #弾位置更新 case gv("j")[n] when 1 #左向き移動中 gv("x")[n]=gv("x")[n]-12 if gv("x")[n]<-32 gv("j")[n]=0 #画面外に来たら出てない状態にする end when 2 #右向き移動中 gv("x")[n]=gv("x")[n]+12 if 832<gv("x")[n] gv("j")[n]=0 #画面外に来たら出てない状態にする end when 3 #上向き移動中 gv("y")[n]=gv("y")[n]-12 if gv("y")[n]<-32 gv("j")[n]=0 #画面外に来たら出てない状態にする end end #case終 setSpritePosition(gv("h")[n], gv("x")[n],gv("y")[n]) n=n+1 end drawCanvas(); waitTime(20) #忘れずに入れる end #keyループ終 endInput() #入力終 goBadEnding()
マウスカーソルがキャラより右にあれば右に歩き、
カーソルが左にあれば左に歩く
弾は自動で飛ぶ(4個)
今日はここまで。次回はジャンプと落下と着地(壁衝突判定)
コメントする
コメントするには、ログインする必要があります。
コメント一覧
退会したユーザー(投稿日:2012/03/29 19:02,
履歴)
おお!続きが超楽しみです!
そんなときは誰か勝手に続きをつくって完成させて、公開しちゃって下さいな