宇宙文字解読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との関係とモンスター設定との兼ね合いをテストプレーしながら調整中です。
ありがとうございます。
完成するのを楽しみにしています!