宇宙文字解読3
投稿者: @gsenkyg 投稿日:2014/01/26 05:38
さて今回はイベントアニメーションをテスト試行してみました。
徘徊中に見つけたaoihikawa様のスクリプトを加工使用しています。
ゲームーイベントにアニメーションを入れてみました。
今回の画像は240×180を用意しました。
画像の大きさや、アニメ画像の変更などで、
ゲームオープニングとかエンデングとか、
特別なイベントととかゲーム中のいろんな利用方法が考えられます。
今回は
「メルカバMK4の砲撃シーン」を作成してみました。
尚公開画像を30コマ分用意しましたので、暇のある方はお試し下さい。(w
30画像全てクリップして、このスクリプトでイベントを付ければ動画が再生できると思います。
テスト結果はGIFアニメ並みと思われます。
簡単な話す程度のアニメや、表情アニメであれば30コマで十分すぎるものが出来上がると思いますヨ!。
マップ単位画像が50までですから30程度がよろしいかな?と思います。
また多様すると重くなるので適度がいいのかも?
ちなみに自分の作成しているGIFアニメは99枚の画像を使用しています。
これに使用している画像もそれらから中トビ30枚画像を抽出したものです。
動画で使用される画像数は90秒で3000枚画像程度かと?
スクリプト記入ミスがあり修整
while i < 20をwhile i < 30に修整
ツイート
徘徊中に見つけたaoihikawa様のスクリプトを加工使用しています。
ゲームーイベントにアニメーションを入れてみました。
今回の画像は240×180を用意しました。
画像の大きさや、アニメ画像の変更などで、
ゲームオープニングとかエンデングとか、
特別なイベントととかゲーム中のいろんな利用方法が考えられます。
今回は
「メルカバMK4の砲撃シーン」を作成してみました。
尚公開画像を30コマ分用意しましたので、暇のある方はお試し下さい。(w
30画像全てクリップして、このスクリプトでイベントを付ければ動画が再生できると思います。
テスト結果はGIFアニメ並みと思われます。
簡単な話す程度のアニメや、表情アニメであれば30コマで十分すぎるものが出来上がると思いますヨ!。
マップ単位画像が50までですから30程度がよろしいかな?と思います。
また多様すると重くなるので適度がいいのかも?
ちなみに自分の作成しているGIFアニメは99枚の画像を使用しています。
これに使用している画像もそれらから中トビ30枚画像を抽出したものです。
動画で使用される画像数は90秒で3000枚画像程度かと?
#画像スプライト deleteAllSprite() #最初に使う前にキャンバスをキレイにしておく drawCanvas() setCanvasVisible(true) #準備 x =0 y =0 w =240 h =180 xx=0 yy=0 ww=240 hh=180 #画像IDをここに入れます。 img_id_01 = createSprite(221082) setSpriteRect(img_id_01, x,y,w,h, xx,yy,ww,hh) img_id_02 = createSprite(221089) setSpriteRect(img_id_02, x,y,w,h, xx,yy,ww,hh) img_id_03 = createSprite(221096) setSpriteRect(img_id_03, x,y,w,h, xx,yy,ww,hh) img_id_04 = createSprite(221103) setSpriteRect(img_id_04, x,y,w,h, xx,yy,ww,hh) img_id_05 = createSprite(221110) setSpriteRect(img_id_05, x,y,w,h, xx,yy,ww,hh) img_id_06 = createSprite(221117) setSpriteRect(img_id_06, x,y,w,h, xx,yy,ww,hh) img_id_07 = createSprite(221131) setSpriteRect(img_id_07, x,y,w,h, xx,yy,ww,hh) img_id_08 = createSprite(221131) setSpriteRect(img_id_08, x,y,w,h, xx,yy,ww,hh)#ここはわざと画像を重複させてあります。 img_id_09 = createSprite(221138) setSpriteRect(img_id_09, x,y,w,h, xx,yy,ww,hh) img_id_10 = createSprite(221145) setSpriteRect(img_id_10, x,y,w,h, xx,yy,ww,hh) img_id_11 = createSprite(221152) setSpriteRect(img_id_11, x,y,w,h, xx,yy,ww,hh) img_id_12 = createSprite(221159) setSpriteRect(img_id_12, x,y,w,h, xx,yy,ww,hh) img_id_13 = createSprite(221166) setSpriteRect(img_id_13, x,y,w,h, xx,yy,ww,hh) img_id_14 = createSprite(221180) setSpriteRect(img_id_14, x,y,w,h, xx,yy,ww,hh) img_id_15 = createSprite(221187) setSpriteRect(img_id_15, x,y,w,h, xx,yy,ww,hh) img_id_16 = createSprite(221194) setSpriteRect(img_id_16, x,y,w,h, xx,yy,ww,hh) img_id_17 = createSprite(221201) setSpriteRect(img_id_17, x,y,w,h, xx,yy,ww,hh) img_id_18 = createSprite(221208) setSpriteRect(img_id_18, x,y,w,h, xx,yy,ww,hh) img_id_19 = createSprite(221215) setSpriteRect(img_id_19, x,y,w,h, xx,yy,ww,hh) img_id_20 = createSprite(221222) setSpriteRect(img_id_20, x,y,w,h, xx,yy,ww,hh) img_id_21 = createSprite(221231) setSpriteRect(img_id_21, x,y,w,h, xx,yy,ww,hh) img_id_22 = createSprite(221238) setSpriteRect(img_id_22, x,y,w,h, xx,yy,ww,hh) img_id_23 = createSprite(221245) setSpriteRect(img_id_23, x,y,w,h, xx,yy,ww,hh) img_id_24 = createSprite(221252) setSpriteRect(img_id_24, x,y,w,h, xx,yy,ww,hh) img_id_25 = createSprite(221259) setSpriteRect(img_id_25, x,y,w,h, xx,yy,ww,hh) img_id_26 = createSprite(221266) setSpriteRect(img_id_26, x,y,w,h, xx,yy,ww,hh) #60 img_id_27 = createSprite(221273) setSpriteRect(img_id_27, x,y,w,h, xx,yy,ww,hh) img_id_28 = createSprite(221280) setSpriteRect(img_id_28, x,y,w,h, xx,yy,ww,hh) img_id_29 = createSprite(221287) setSpriteRect(img_id_29, x,y,w,h, xx,yy,ww,hh) img_id_30 = createSprite(221294) setSpriteRect(img_id_30, x,y,w,h, xx,yy,ww,hh) #表示する座標の設定 soto_x = -200 soto_y = -200 naka_x = 0 naka_y = 0 #まずは、すべての画像を画面外に表示 setSpritePosition(img_id_01, soto_x, soto_y) setSpritePosition(img_id_02, soto_x, soto_y) setSpritePosition(img_id_03, soto_x, soto_y) setSpritePosition(img_id_04, soto_x, soto_y) setSpritePosition(img_id_05, soto_x, soto_y) setSpritePosition(img_id_06, soto_x, soto_y) setSpritePosition(img_id_07, soto_x, soto_y) setSpritePosition(img_id_08, soto_x, soto_y) setSpritePosition(img_id_09, soto_x, soto_y) setSpritePosition(img_id_10, soto_x, soto_y) setSpritePosition(img_id_11, soto_x, soto_y) setSpritePosition(img_id_12, soto_x, soto_y) setSpritePosition(img_id_13, soto_x, soto_y) setSpritePosition(img_id_14, soto_x, soto_y) setSpritePosition(img_id_15, soto_x, soto_y) setSpritePosition(img_id_16, soto_x, soto_y) setSpritePosition(img_id_17, soto_x, soto_y) setSpritePosition(img_id_18, soto_x, soto_y) setSpritePosition(img_id_19, soto_x, soto_y) setSpritePosition(img_id_20, soto_x, soto_y) setSpritePosition(img_id_21, soto_x, soto_y) setSpritePosition(img_id_22, soto_x, soto_y) setSpritePosition(img_id_23, soto_x, soto_y) setSpritePosition(img_id_24, soto_x, soto_y) setSpritePosition(img_id_25, soto_x, soto_y) setSpritePosition(img_id_26, soto_x, soto_y) setSpritePosition(img_id_27, soto_x, soto_y) setSpritePosition(img_id_28, soto_x, soto_y) setSpritePosition(img_id_29, soto_x, soto_y) setSpritePosition(img_id_30, soto_x, soto_y) #アニメーションさせる i = 0 while i < 30 view_id = "" #アニメーションで表示する画像のID hide_id = "" #アニメーションで隠す画像のID #それぞれのIDをセットする case i when 0 view_id = img_id_01 hide_id = img_id_30 when 1 view_id = img_id_02 hide_id = img_id_01 when 2 view_id = img_id_03 hide_id = img_id_02 when 3 view_id = img_id_04 hide_id = img_id_03 when 4 view_id = img_id_05 hide_id = img_id_04 when 5 view_id = img_id_06 hide_id = img_id_05 when 6 view_id = img_id_07 hide_id = img_id_06 when 7 view_id = img_id_08 hide_id = img_id_07 when 8 view_id = img_id_09 hide_id = img_id_08 when 9 view_id = img_id_10 hide_id = img_id_09 when 10 view_id = img_id_11 hide_id = img_id_10 when 11 view_id = img_id_12 hide_id = img_id_11 when 12 view_id = img_id_13 hide_id = img_id_12 when 13 view_id = img_id_14 hide_id = img_id_13 when 14 view_id = img_id_15 hide_id = img_id_14 when 15 view_id = img_id_16 hide_id = img_id_15 when 16 view_id = img_id_17 hide_id = img_id_16 when 17 view_id = img_id_18 hide_id = img_id_17 when 18 view_id = img_id_19 hide_id = img_id_18 when 19 view_id = img_id_20 hide_id = img_id_19 when 20 view_id = img_id_21 hide_id = img_id_20 when 21 view_id = img_id_22 hide_id = img_id_21 when 22 view_id = img_id_23 hide_id = img_id_22 when 23 view_id = img_id_24 hide_id = img_id_23 when 24 view_id = img_id_25 hide_id = img_id_24 when 25 view_id = img_id_26 hide_id = img_id_25 when 26 view_id = img_id_27 hide_id = img_id_26 when 27 view_id = img_id_28 hide_id = img_id_27 when 28 view_id = img_id_19 hide_id = img_id_28 when 29 view_id = img_id_20 hide_id = img_id_29 end #セットされたIDをもとに、座標を決定する setSpritePosition(view_id, naka_x, naka_y) setSpritePosition(hide_id, soto_x, soto_y) drawCanvas() i = i + 1 waitTime(100) end #画像を消しています。 setCanvasVisible(false) deleteTextAll()
スクリプト記入ミスがあり修整
while i < 20をwhile i < 30に修整
コメントする
コメントするには、ログインする必要があります。
コメント一覧
こういった、連続や類似したデータを複数扱う場合、
配列を使用すると便利になります
配列についてはこちら
こうすることで
スクリプトが短くすっきりする他、
アニメーションの枚数が増えた場合も
img_id_list_strの内容を編集するだけで
対応が可能になります
配列を使用すると便利になります
配列についてはこちら
#画像スプライト deleteAllSprite() #最初に使う前にキャンバスをキレイにしておく drawCanvas() setCanvasVisible(true) #準備 x =0 y =0 w =240 h =180 xx=0 yy=0 ww=240 hh=180 #表示する座標の設定 soto_x = -200 soto_y = -200 naka_x = 0 naka_y = 0 #画像番号リストを配列として用意 img_id_list_str = "221082,221089,221096,221103,221110,221117,221131,221131,221138,221145,221152,221159,221166,221180,221187,221194,221201,221208,221215,221222,221231,221238,221245,221252,221259,221266,221273,221280,221287,221294" img_id_list = createArray() img_id_list = splitString(img_id_list_str, ",") #,区切りで文字列を分解 img_id = createArray() i = 0; img_id_list_length = getArrayLength(img_id_list) #長さを保管しておき、ループさせる while i < img_id_list_length img_id_list[i] = toNumber(img_id_list[i]) #文字列になっているので数値に直す #画像IDをここに入れます img_id[i] = createSprite(img_id_list[i]) setSpriteRect(img_id[i], x,y,w,h, xx,yy,ww,hh) #まずは、すべての画像を画面外に表示 setSpritePosition(img_id[i], soto_x, soto_y) i = i + 1 end view_id = "" #アニメーションで表示する画像のID hide_id = "" #アニメーションで隠す画像のID #アニメーションさせる i = 0 while i < img_id_list_length #それぞれのIDをセットする if i > 0 view_id = img_id[i] hide_id = img_id[(i - 1)] else view_id = img_id[i] end #セットされたIDをもとに、座標を決定する setSpritePosition(view_id, naka_x, naka_y) if i > 0 setSpritePosition(hide_id, soto_x, soto_y) end drawCanvas() i = i + 1 waitTime(100) end #画像を消しています。 setCanvasVisible(false) deleteTextAll()
こうすることで
スクリプトが短くすっきりする他、
アニメーションの枚数が増えた場合も
img_id_list_strの内容を編集するだけで
対応が可能になります
aoihikawa様お世話になります。
ありがとうございます。
このあたりになにやらスクリプトの記載ミスがあるようなのですが?
setSpritePositionに不正なハンドルが指定されました。ハンドル0は無効です。 line : 29
setSpritePositionに不正なハンドルが指定されました。ハンドル0は無効です。 line : 31
と表示されます。
ありがとうございます。
このあたりになにやらスクリプトの記載ミスがあるようなのですが?
#画像IDをここに入れます img_id[i] = createSprite(img_id_list[i]) setSpriteRect(img_id[i], x,y,w,h, xx,yy,ww,hh) #まずは、すべての画像を画面外に表示 setSpritePosition(img_id[i], soto_x, soto_y) end
setSpritePositionに不正なハンドルが指定されました。ハンドル0は無効です。 line : 29
setSpritePositionに不正なハンドルが指定されました。ハンドル0は無効です。 line : 31
と表示されます。
aoihikawa様
ご丁寧にありがとうございます。
iを加算する式は下の方にあったのでそれで良いのかと思いましたが、ループ内にも必要となるのですね。
なるほどとの思いです。
それとこのスクリプトで画像枚数を自由にできる点が素晴らしいですね。マップシーンに添ってのアニメーションが自在に表現するに簡素化された感じがします。
ご丁寧にありがとうございます。
iを加算する式は下の方にあったのでそれで良いのかと思いましたが、ループ内にも必要となるのですね。
なるほどとの思いです。
それとこのスクリプトで画像枚数を自由にできる点が素晴らしいですね。マップシーンに添ってのアニメーションが自在に表現するに簡素化された感じがします。
while ~ end で
ループの1セットです
while文についてはこちら
ループ中はこの中しか実行されないため、
上のループでは永久にiが加算されず、
画像の作成枚数が許容量を超えたことで
エラーとなっておりました
なお、この現象を
「無限ループ」と言います
ループの1セットです
while文についてはこちら
ループ中はこの中しか実行されないため、
上のループでは永久にiが加算されず、
画像の作成枚数が許容量を超えたことで
エラーとなっておりました
なお、この現象を
「無限ループ」と言います
前回で試作品がもう少し、という話ですが、この調子なら早くできると思いますよ。
コメントありがとうございます。
ゲームを製作していると、途中であれ? と言うのが出てきます。
こんなはずじゃないな~~。こんなのがあったなら。あんなのがあったなら?。いいな~~なんて思うようになります。
でも新しいスクリプトを学ぶと、前に覚えたはずのスクリプトを忘れてる。!(爆
今はそれの繰り返しです。(wwww
最近長編RPGを作っていたりする時に全然違う!ていうのがあります。
追記
素材へのコメントありがとうございます!
ステータスのお勉強をしています。
レベルUPとの関係とモンスター設定との兼ね合いをテストプレーしながら調整中です。
ありがとうございます。
完成するのを楽しみにしています!