プロフィール

はーさん

Author:はーさん
1人創作チームDeadMan'sSunのボスです。
Twitter→@Ha_Shok_ko

TERA HITO:Revolutionを作りました。よろしく頼むぜ、兄弟!
・ふりーむ!のTERAのページ(exe形式公開場所)へ
・UnityRoomのTERAのページ(WebGL版公開場所)へ

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム
QRコード
QR

私のアイランド


--/--/-- --:-- はーさん

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2015/07/12 00:23 はーさん

作るゲームの話


今現在の制作ちうのゲームの話をします。
言うだけ無料なので(一応進めていますヨ!)

1.はーさんチョロQ2(仮)

ビジュアルとシステム周りに工夫を入れるのと、操作周りの改善を行ってます。
あと、ステージ数も増やしてセーブ機能なんかも付けたいですね。
できることならサーバーを使ってのセーブデータのやりとりなんかを実装してみたいです。
八月終わりに完成したらラッキー、って感じです。

2.マリオとワリオ的なアクションパズル

NavMeshの情報を最近集めてきて、なんとなーく分かってきました。
ずっと前から作っていた2dゲームですが、あれよこれよと考えていくうちに面白くないのでは・・・と変なことを考え始めて、止まっちゃいました。
グリムグリモア、勇者のくせになまいきだやマリオとワリオを見て、ストーリー等で思いついたものがあるので作ろうと思います。
せっかく作って放置は、勿体無いですし・・・。
こっちは、がんばって安藤ロイドとかアイヒョンなんかのアプリで出せたらいいかなぁ、なんて思ってます。
素材作りでまだの分をしないといけないんですけどね。

でも、Spineを買ったのでソイツを使う練習もかねて地道に作っていこうと思います。
コレはたぶん秋ごろにできたら嬉しいわぁって感じです。


あとは来年の日本ゲーム大賞に出したりするゲームの素材の絵を描いたりしています。
完成できるかなぁ・・・

2015/07/09 19:45 はーさん

Navmeshのこと(続編)


GangplankでRivenに勝てました。

さてはてはてさて、二日の更新の空きがありまして、さっそくダメじゃんコイツ!と言われそうなブログであります。
今になって己の無知さを知りビビっております。
今日も備忘録書いてまいります。


Navmeshの関数とかの話

pathについて調べました。
調べている最中に、pathを使った目的地までの距離を計測する方法を掲載しているサイト様がございました。

Unityメモ NavMeshAgentでターゲットまでの距離を求める

そこでまずNavMeshPathという型宣言と経路パスの代入、それからPath.Corner[i]という記述を見つけました。
経路の探索なので、当たり前と言えば当たり前のことだったんですが、このNavMeshPath型で宣言した変数にはおそらくオブジェクトの移動のためのパス情報が配列的なもので格納されているっぽいです。
ちなみにこのCornerには未踏破、つまりはまだ行ってないPathの情報が格納されているとか、なんとか。

新しい経路の割り当ての方法としてはいくつか出てますね。
有名なのが「NavMeshAgent.SetDestination」ですね。
これは引数に目的地の座標を上げるだけで、あとは勝手にPathを作って勝手に動いてくれます。
こんな感じで。

NavMeshAgent.SetDestination(target.transform.position);

これでtargetのポジションまで移動してくれます。
すげぇ!ほかの方法いらなくね?
もしかすると色々勝手にしてくれるという代償として負荷があるのかもしれません。Maybe。

次はちょっと長たらしくなりますけど

NavMeshAgent nMA;
NavMeshPath path = new NavMeshPath();
nMA.CalculatePath(Target.position,path);
nMA.SetPath(path);


こんな感じのもの。

一行目は変数の宣言です。NavMeshAgent型の。
どっかでGetComponentなりでNavMeshAgentを取得しないといけませんぬことをお忘れなくんぬ。

二行目に、NavMeshで使うpathを保存するためにNavMeshPath型の変数を宣言して、newとしてNavMeshPath関数を呼び出して、引数を何もなしにして空っぽを入れます。

三行目はpathの計算をして、できたPathを保存するものです。
第一引数に目標の座標。Vector3です。で、第二引数には計算して出たPathを保存するpathをセット。

四行目のSetPath関数は、オブジェクト(NavMeshAgentがセットされている前提)にPathを渡して実際に動いてもらうものです。

果たして、こっちのほうがSetDistinatiionよりも軽かったりするのでしょうか・・・?
真相やいかに。
今度調べておきます。

それとNavMeshAgnetのCaliculatePathNavMeshのCaliculatePath引数とかその他諸々が違うようです。
と、いうかNavMeshのAgnet付きと付かないヤツとで違いが存在するのは気になるところです。
これも調べておきます。
(調べたらどんどん調べることが出てくるなぁ)

あとは謎の存在であるMoveを使う方法なんですけどテラシュールウェアさんがもうすでにやっておりました。

テラシュールウェア マップから落ちないようにステージ上を歩かせる楽な方法

Moveってどういうときに使うのが良いんでしょうね。
やっぱSetDistinationよりも処理が軽いとかそういうのなのかなぁ。うーん。


それから、移動を止める方法はStop関数というのがあることも分かりました。

NavMeshAgnet.Stop();

こんな感じで書いてあげて使うようです。
返却値はtrue or false・・・だったはず。Maybe。
ただ、このStop関数は、使えばその場で、すぐに止まる優れものなんですけど、使うと再開してね、って言うまで止まったまんまです。
一時停止みたいなものらしい。ポーズ的な。
そりゃあスタートボタンもっかい押さないと動かないわな。
そして再開するのはResume関数という輩。

NavMeshAgent.Resume();

こいつを使うと、ストップしていた動きを再開してくれるそうです。
動きの再開はストップさせていたとこから。


また少しNavMeshくんとのユウジョウがディープにビルドされたんじゃないかと思われます。
ウォーターフォール的な。(意味分かって使ってません。)

新しいことが分かれば、また更新します。
分からないことだらけなんで、ぶっちゃけほとんど新しいことばっかですけども。

2015/07/07 02:53 はーさん

Navmeshのお話

NavmeshAgentでお気軽に経路探索を使っているわけですが、コイツにいつまでも頼るのはよろしくないと思う自分です。
先輩から経路探索に役立つ資料をいくつかもらったので、がんばって経路探索アルゴリズムを作ろうと思います。
コレできたら、すごいんじゃね?
「チミィ~~~~スキルレベルいい感じだねぇ↑」って思われること間違いなし。

で、今日はNavmeshくんのメモ。
お互いの歩み寄りから理解が深まるので僕のほうから足を踏み出してあげた。

Navmeshの変数

・hasPath
移動可能なpathを持ってたらtrueで、移動不可能なpathであるorもうpathが無かったらfalseを返すようだ。
僕はいまいちこのNavmeshくんのことがよく分からなくてdestinationで移動先設定してぶんぶん動かして絶対値で止まったかどうかを調べてました。なんてマッスルなコーディングなんだ。
移動不可能になったら動作を停止とかするときに使うといいのかもしれない。

・pathStatus
ずっとPathCompletedしか出てこなかったので何に使うのかよく分からなかった。
そもそもNavmeshはメッシュの上をたどっていく処理。
ditinationでセットしていたら、セットした地点までのメッシュをとるので、多分メッシュ上の点全部含むとかそんなんだと思う。
だからパス移動完了しか答えなかった・・・と思う多分!Maybe。

・path
リファレンスを読むに、コイツを使ってコードから自分でpathをセットできるらしい。
しかし例のコードも載ってないので、使い方がちんぷんかんぷんであります。
コイツについて、調べていこうと思います。多分全部英語だ。
(Navmesh系の情報って日本語だとほとんど内容被ってる、というかテラシュールウェアさんがほとんどなんですよね)

Navmeshの関数

・move

相対的な移動ってなんだろう・・・
試してみるも明後日の方向に戦車が飛んでいったので、何物か分からぬままでした。

ほかにも関数系は使い方はさっぱりだけど、使い方さえ分かればすごく便利そうな関数があった。
多分調べて出る情報は全部英語です。


あとNavmeshのObstacleAvoidanceのPriorityってなんや?と思って試したところ、避ける物の優先度のようですな。
これで大柄なユニットは小型のユニットを吹っ飛ばしたり、アホな敵は地雷をよけないけど味方はよけるし、賢い敵や地雷探知機を持つユニットは地雷をよける、とかそんなことができる・・・かも?

ただ普通にぶつかっても元の位置に戻ろうとするので元の位置に戻さないようにしたりとかしないといけないかも。
あとNavmeshAgentの例にもれず、なぜかY座標が0にならずにちょっと浮いてるのとか。
(多分Navmeshをオブジェクトに張りつけてるからその分が浮いてるんだと思う)


ちょっとはNavmeshくんとお友達になれたかも。
経路探索を自作できたら、多分使うことはなくなると思います。
色々小回りが利きにくいっていうのがあるので・・・(それならMonoを拡張すればいいのでは?という言葉はシャットダウン)

今のはーさんチョロQのリメイクと平行して、システム工学とかの開発の仕方にのっとったコーディングの練習をしてみようかなぁ、と思ったり。
野望とか目標は今度別に。



ああ、次はpathの話だ・・・




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。