プレイ日記
アクションゲーム制作が行き詰まっているのでRPGを作ろうかな… (もちろんアクションゲームも作るけど) ボタンを押している時に歩行アニメーションが出来るようにしたいのですがどうすればいいですか?
5そうだね
プレイ済み
返信[1]
親投稿
マザ1かーい!
0そうだね
プレイ済み
返信[2]
親投稿
nobu divine-creator
これのフォルダ内にあるCAT_WALKというファイルを実行してみれば、歩く方向に合わせたアニメの例を体験できますよ♪ 猫を別のキャラに変えてみてね!
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
プチコン3号において正しく動作するアニメーションしながら歩行させるプログラムを作るのは初心者にとって簡単なことではありません。 難易度レベル レベル1 SPANIMの書式を覚える レベル2 SPANIMでアニメーションしながら移動ができる レベル3 ボタンを押した状態で自在にアニメーションしながら移動ができる やり方さえ分かれば決して難しくないものの覚えることが多いため私が作ったSPANIMを簡単に扱えるSPANIM2命令を使用するのをオススメします。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0fsz6Tuqg これを使えばアニメーションさせながら移動が簡単にできます。 8方向移動のサンプルプログラム付きなので良かったら参考にしてみてください。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
nobuさんへ サンプルプログラムを試してみたところボタンを離さずに上から右とか左から下とかの斜め方向を経由して押し替えた際にはアニメーションが止まった状態で移動してしまいます。 これは途中に斜め移動を挟んで上から右に押し替えた時は「上が離された」と判断してアニメが上向きで停止し右上(右と上を両方押している状態)から右に押し替えた場合は右を押したままになっているため新規にSPANIMが実行されることはなく上を向いたキャラがアニメ停止のまま右に移動してしまうわけです。 現状の状態が仕様でないならば細かく場合分けをするかボタンではなくキャラの向きが変化する時のみSPANIMを行うようにすると良いと思います。 キャラの向きで判定するとスライドパッドやタッチでの動作時でもちゃんとその向きに向いてアニメーションさせたまま移動が可能になりますよ。
1そうだね
プレイ済み
返信[5]
親投稿
歩行のやり方は色々あるしサンプルが出ているみたいなので、僕も以前投稿したサンプルを載せておきます。参考になれば…。
1そうだね
プレイ済み
返信[6]
親投稿
皆さんありがとうございます! 参考にさせていただきます!
0そうだね
プレイ済み
返信[7]
親投稿
nobu divine-creator
おちゃめさんへ そのプログラムはかなり前に作って、斜めを押した場合の不具合を放置したままにしていたので、そんな感じになっています…(苦笑)。 最近、修整したのは、操作説明を追加しただけなので、その不具合は以前のままでした…。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
nobuさんへ 私は「SPANIM実行中にSPANIMをさらに実行させようとさせてアニメーションができない」等で悩んでいる初心者へのアドバイスをする場合には「ボタンを押した瞬間にSPANIMを実行」「ボタンを離したらSPANIMを停止」という解決方法を言っていますが、8方向移動をさせる場合にはボタンだけで判断するのはかなり大変なんですよね。 でんぺんさんのサンプルにもあるように「キャラの向き」で判断するのが一番簡単です。 それならば最初から「ボタン」ではなく「向き」でアドバイスをすれば良さそうですが、向きが必要かどうかも分からないし、ボタンだけで普通に「押した瞬間」と「離している場合」だけを判断して作っても向きを変えるたびに十字ボタンから離せば普通に動くため不具合と断言できず「ボタン」だけでも特に問題はないため「ボタン」でアドバイスしているだけにすぎません。
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
ちなみに私の自作命令SPANIM2は上記のレベル1、レベル2の段階で悩んでいる初心者には非常に有効ですが、レベル3以上の人にとっては「簡潔に記述ができる」「開始コマ数の設定ができる」くらいのメリットしかありません。
0そうだね
プレイ済み
返信[10]
親投稿
nobu divine-creator
あっ!いつの間にか追加情報が書かれていたのですね! お知らせが無かったため、気づくのが遅れました…。 でんぺんさんのプログラムのNDとは、何の略ですか? そして、DとNDを使った判定がよく理解できていないのですが、それはどのような仕組みで判定されているのでしょう?
0そうだね
プレイ済み
返信[11]
親投稿
nobu divine-creator
自力でいろいろ試していたら、何とかできたみたいです♪ でんぺんさんのプログラムと違って、デフォルトのスプライトを使っていないため、そのままのプログラムでは正常に動かせませんでしたが、自己流にアレンジしまくったら、一応正しくアニメしてくれるようになりました! そして、ボタンによってネコの種類を変えられるようにもできました♪
0そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
nobuさんへ すでに解決済みとのことですが、でんぺんさんに代わって解説しておきます。 DはDirection(方向)の略、NDはNew DirectionもしくはNext Directionの略だと思います。 キャラの新しい向きを示している変数ですね。 ちなみに古い変数(1フレーム前の情報を保存しておきたい場合)には「Pre」「Before」「Old」などを略して「P」「B」「O」を付けることが多いです。 BUTTON(2)を使わずにボタンを押した瞬間を取得するなど「1フレーム前の情報と比較する」という機会は多いと思います。 そういう場合もこういうパターンを使えば変数名で悩むことはないし後から見ても何の変数かが分からないということも無くなると思います。
1そうだね
プレイ済み
返信[13]
親投稿
おちゃめ ochame_nako
SPANIMで自在にアニメーションさせる場合に重要な部分は2つです。 SPANIMはSPCHRなどを使って停止できるということとSPANIM最中にSPANIMを実行すると1コマ目からまたアニメが開始する(毎フレームSPANIMを実行していたら1コマ目で静止する)ということです。 したがって、SPANIMはアニメーションさせたい最初のボタン入力の時点で実行してボタン入力の無い場合は静止するということが必要になるわけです。 つまり、「キャラが向いている方向が変わる瞬間」「静止状態から動き出す瞬間」にSPANIMを実行すれば良いわけです。 キャラの向きが変わった場合だけ(後者の条件が不足している場合)だとは右向きで移動→静止→右向きで移動というのができなくなってしまいます。
1そうだね
プレイ済み
返信[14]
親投稿
おちゃめ ochame_nako
これを踏まえてでんぺんさんのプログラムを見るとDの値はループの最初の部分でD=0となっています。そして、十字ボタン入力をすることでキャラの向きに対応する定義番号がDに入ります。 SPANIMを実行するのはD!=NDかつD!=0の場合となっています。 D!=NDとなるのはキャラの方向が変わる瞬間もしくは十字ボタンを押した瞬間もしくは離した瞬間です。 D!=0となるのは十字ボタンを押している時なので十字ボタンを押した瞬間もしくはキャラの向きが変わる瞬間にSPANIMを実行します。 そして、停止するのはD!=NDかつD==0の時なので十字ボタンを離した瞬間となります。 というわけで、ちゃんとすべての場合を網羅していてなおかつ合理的なプログラムなのでサンプルとしては良い感じですね。
1そうだね
プレイ済み
返信[15]
親投稿
nobu divine-creator
おちゃめさん、丁寧で詳しい解説をありがとうございます♪ でんぺんさんのプログラムの流れを見て、何となくそういう仕組みかな…と感じていたことが、確認できました。 NDについては、中身が変わらない変数なので、NewやNextっぽくはない気がしますけど、たぶんそのどちらかなのでしょうね。 まだ、自分で同様の仕組みを考えることはできないので、それを参考にして改造したのですが、自分でゼロから作り出すのは難しいです…。
0そうだね
プレイ済み