ページ 11

キャラクターをマウスをクリックしたところに誘導したい

Posted: 2016年3月02日(水) 20:44
by ランダマイズ
今作成中のゲームでプレイヤーのキャラクターをクリックしたところに誘導したいと思い
とりあえずノードを座標上にちりばめ適当にエッジで結びダイクストラ法を用いてあらかじめ最短経路テーブルを作成するサンプルコードを作りました。
経路探索テーブルはこのサイトの記事を参考にしました。
http://www.4gamer.net/games/032/G003263/20121205079/

しかし、冷静になって考えてみるとこの方法では目的のノードには誘導できますが目的の座標には誘導できません。

そこで質問なのですが、作ってしまったサンプルを活かしながら目的の座標に誘導する方法はあるのでしょうか。
あるいは、どのようにすれば目的の座標に誘導させることができるのでしょうか。
また、本題とはそれてしまいますが、サンプルコードの

コード:

getch();
の部分でコマンドプロントの罰ボタンを押すとメモリリークが発生してしまいます。
これはコードがマズイということなのでしょうか...。

最短経路テーブルを作るコード
► スポイラーを表示
C++歴約一年ほど
環境はwin8.1、VisualC++2010Express
です。

(最短経路テーブルを作成しようと考えた理由はA*法を理解するのが思ったよりも難しかったのと
ダイクストラ法の処理コスト?がノードの数が増えるごとに爆発的に増えるという説明にビビったからです。)

Re: キャラクターをマウスをクリックしたところに誘導したい

Posted: 2016年3月03日(木) 09:32
by usao
やりたいことがよくわかりませんが…

>目的の座標

な位置にノードを置けばいいのでは?

Re: キャラクターをマウスをクリックしたところに誘導したい

Posted: 2016年3月04日(金) 00:17
by ランダマイズ
usao様
返信ありがとうございます!
すいません、ノードは後からでも追加できるんですね…
ちゃんと調べてなかったようです。

もう少しいろいろ試してみたいと思います。

Re: キャラクターをマウスをクリックしたところに誘導したい

Posted: 2016年3月04日(金) 16:49
by usao
ちょっと話を読み違えていたのかもしれません.
あらかじめ用意したデータを用いて…という話なのですね.

こういうのをやったことないのですが,単純に考えると

世界(?)をいくつかのエリアに分割して,各エリアの代表点をノードだとするようなことを考えると
「エリア内の任意の位置からそのエリアのノードまでの経路というのが簡単に定まる」ようにエリアを切っておくならば,
経路(今の位置 → 今の位置が属するエリアのノード → 目標位置が属するエリアのノード → 目標位置)
は自明ではないのでしょうか.

#そういう話ともちがう?

Re: キャラクターをマウスをクリックしたところに誘導したい

Posted: 2016年3月04日(金) 22:06
by ランダマイズ
usao様
usao さんが書きました: あらかじめ用意したデータを用いて…という話なのですね.
その通りです!
ただ、各エリアの代表点をノードにするのではなく、マップにノードを張り巡らし
それをもとにしてあらかじめデータを作りたいと考えています。

目的の座標にノードを後から追加できるということなので、あらかじめ用意したデータ
とどうやって組み合わせるかを考えているところです。

今のところ考えているのは最短経路を表したデータのほかに
そのノードに着くまでの移動距離を表したデータも作っておき
それと今いる座標と目的の座標を照らし合わせて最短経路を確定させようかと。
うーん、うまく説明できません、すいません。

(あらかじめ用意したデータを使わないでもいいような気がしてきた...。)