トップページ > 記事閲覧
キャラクターの移動の向きについて
名前:north 日時: 2014/11/02 02:09

お世話になっております。 前回はありがとうございました。 また、短期間での連続のご質問で申し訳ありません。 今回キャラクターが移動する際ジョイスティックの入力方向に向きを変えさせて移動させたいのですが、その場合はどのようにしたらよろしいでしょうか? 3Dアクションのサンプルプログラムを見てみたのでが、カメラの視線を基に算出しているみたいで、 今回は2D風のSTGを作成したいため、カメラは定点での設置となりカメラの移動はありません。 その場合どのようにしたら良いのか分からず、 今回ご質問させていただきました。 UPでy軸の上方向に DOWNでy軸の下方向に RIGHTでx軸の右方向に LEFTでx軸の左方向に 移動させたいと思っているのですが、 向きを変えたいのはx軸方向に移動する際です。(斜めに移動する際は斜め砲方向にむかせたいと思っております。) また、前回作成していただいたサンプルプログラムと 合わせて使用したいと思っているのですが、 その場合はどのようにしたらよろしいでしょうか? 考えては見たのですが自分ではコードが思いつきませんでした。 お忙しい中申し訳ありませんがご教授願えますでしょうか? プロジェクトは下記URLにアップいたしました。 ttp://xfs.jp/Rxf5sx
メンテ

Page: 1 |

Re: キャラクターの移動の向きについて ( No.1 )
名前:管理人 日時:2014/11/02 21:21

> 今回は2D風のSTGを作成したいため、カメラは定点での設置となりカメラの移動はありません。 > その場合どのようにしたら良いのか分からず、 > 今回ご質問させていただきました。 カメラを固定してキャラクターを操作するサンプルを作成してみましたので、よろしければご覧ください http://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_CharactorControl.html > UPでy軸の上方向に > DOWNでy軸の下方向に > RIGHTでx軸の右方向に > LEFTでx軸の左方向に > 移動させたいと思っているのですが、 DXライブラリの3Dは基本的にY軸の方向が上空を指すことを想定しているので( 3DモデルもY軸が上方向ですし ) 今回の場合は UPでz軸の奥方向に DOWNでz軸の手前方向に RIGHTでx軸の右方向に LEFTでx軸の左方向に とした方が良いと思います( カメラの位置を調整してz軸の方向を画面上方向になるようにすれば不都合は無いはずです ) > また、前回作成していただいたサンプルプログラムと > 合わせて使用したいと思っているのですが、 > その場合はどのようにしたらよろしいでしょうか? アニメーションの移動値を使用した座標移動のサンプルと、固定カメラでキャラクターを操作するサンプルを 合わせたサンプルを作成しましたので、よろしければご覧ください http://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_AnimationMoveControl.html
メンテ
Re: キャラクターの移動の向きについて ( No.2 )
名前:north 日時:2014/11/03 18:05

お忙しい中ありがとうございます。 カメラはアドバイス通りにZ軸が画面上方向になるようにいたしました。 サンプルを基に組んでみたのですがモデルが勝手にZ軸下方向に動いてしまいうのですがこれの原因がわからず困っております。 お忙しい中申し訳ありませんが一度見ていただいてもよろしいでしょうか? 下記にファイルをアップいたしました。 ttp://xfs.jp/GHpEy3 何度も質問して申し訳ありませんがよろしくお願い致します。
メンテ
Re: キャラクターの移動の向きについて ( No.3 )
名前:north 日時:2014/11/03 23:46

勝手にZ軸下方向に動いてしまいうバグは解決いたしました。 しかし肝心のモデルがキー入力に合わせて回転してくれないのですが 現在はこれの原因がわからず困っております。 修正したプロジェクトを再アップ致しましたので 一度見ていただいてもよろしいでしょうか? ttp://xfs.jp/CpnV6 何度もお手数をおかけして申し訳ありません。
メンテ
Re: キャラクターの移動の向きについて ( No.4 )
名前:north 日時:2014/11/04 01:57

何度も申し訳ありません。 キャラクターの向きですが 一応回転するようになったのですが 下記のバグが発生しております。 ・キーがUPの時キャラが正面を向いてしまう。 ・キーがLEFT、RIGHTの時にキャラが少し傾いてしまっている。 上記のバグが修正できず困っております。 具体的には下記のように修正したいと思っております。 ・キャラクターが上に行く時も後姿のまま上に移動させたい ・左右に動く時に発生している傾きをなくしたい このように修正したい場合どこをどのように書き直せば よろしいでしょうか? 下記に修正したプロジェクトをアップいたしました。 ttp://xfs.jp/FTgwgg パスワード:stg 何度もお手数をおかけして申し訳ありませんがよろしくお願い致します。
メンテ
Re: キャラクターの移動の向きについて ( No.5 )
名前:管理人 日時:2014/11/05 01:21

プログラムを拝見しました まず、カメラの設定が「低い位置から高い位置の方向を見る」ようなカメラになっているので、Main.cpp のこちらを //カメラはZ軸が画面上方向になるよう第7、8、9引数のうちZ軸の第9引数を1.0にする(通常はY軸が上方向なので第8引数が1.0) camera->CameraInit(320.0f, -450.0f, 220.0f, 320.0f, -280.0f, 240.0f, 0.0f, 0.0f, 1.0f); このようにして、「高い位置から低い位置の方向を見る」カメラ設定にしました //カメラはZ軸が画面上方向になるよう第7、8、9引数のうちZ軸の第9引数を1.0にする(通常はY軸が上方向なので第8引数が1.0) camera->CameraInit(320.0f, -110.0f, 220.0f, 320.0f, -280.0f, 240.0f, 0.0f, 0.0f, 1.0f); > ・キーがUPの時キャラが正面を向いてしまう。 > ・キーがLEFT、RIGHTの時にキャラが少し傾いてしまっている。 上記のカメラの設定を変更した上で、Model.cpp の最後の方のこちら // 新しい向きをセット MV1SetRotationXYZ(model, VGet(90.0f, 0.0f, tPlayerParam.Angle / 180.0f * DX_PI_F)); を、以下のように変更したら正常になりました // 新しい向きをセット MV1SetRotationXYZ(model, VGet(90.0f / 180.0f * DX_PI_F, 0.0f, -tPlayerParam.Angle / 180.0f * DX_PI_F)); あと、走るアニメーションが「全ての親」フレームをアニメーションを無効にしても 「センター」フレームのアニメーションの移動値によって若干原点から離れてしまっているので、 「全ての親」フレームのアニメーションの移動値を無効にしている直ぐ上にでも int TempMoveAnimFrameIndex = MV1SearchFrame(model, "センター"); MV1SetFrameUserLocalMatrix(model, TempMoveAnimFrameIndex, MGetIdent()); という記述を増やして、「センター」フレームのアニメーションの移動値も無効にしておいた方が良さそうです
メンテ
Re: キャラクターの移動の向きについて ( No.6 )
名前:north 日時:2014/11/05 02:13

お忙しい中ありがとうございます。 またカメラ、センターフレームのご指摘もありがとうございました。 カメラはZ軸の感覚でやっていたため、全く気づきませんでした。 センターフレームも自分が見た限りでは特に影響が見られなかったため ご指摘がなければそのままにしていたと思います。 ご返信いただいたアドバイスを基に修正いたしましたら無事に ・キーがLEFT、RIGHTの時にキャラが少し傾いてしまっている バグは修正できました。 ただ、肝心のUPの時にキャラが正面を向いてしまうバグですが 今度は開始時にキャラが正面を向いた状態になっており、 DOWN時に正面を向いてしまいます。 UP、DOWN時は常に後ろ向きにしておきたいのですがそういったことは可能でしょうか? また、可能だとしたらどのように修正したらよろしいでしょうか? 何度もお手数をおかけして申し訳ありませんがよろしくお願い致します。
メンテ
Re: キャラクターの移動の向きについて ( No.7 )
名前:管理人 日時:2014/11/06 00:22

> 今度は開始時にキャラが正面を向いた状態になっており、 tPlayerParam.Angle の初期値を 180.0f にすることで解決します > DOWN時に正面を向いてしまいます。 PAD_INPUT_DOWN が押されていた場合に tPlayerParam.Angle に代入する値を PAD_INPUT_UP が押された場合に tPlayerParam.Angle に代入する値と同じにすれば解決します
メンテ
Re: キャラクターの移動の向きについて ( No.8 )
名前:north(解決) 日時:2014/11/06 01:50

お忙し中ありがとうございます。 おかげさまで無事に解決いたしました。 ただ、キーの入力方向に合わせた座標加算ができなくなっていましたので こちらはサンプルプログラム中の // キャラクターの向きに合わせて移動ベクトルの角度を回転させて、キャラクターモデルの座標に加算 Position.x += MoveVector.x * CosParam -MoveVector.z * SinParam ; Position.z += MoveVector.x * SinParam + MoveVector.z * CosParam ; の部分を上、上斜め、下、下斜め、左右とパターン分けで対処いたしました。 もうちょっといい方法が思いついたらよかったのですが・・・・ 最後まで本当にありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存