AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

Unity

学校シミュレーター

YandereSimulatorというかHighSchoolSimulator2017というか。 いわゆる学校シミュレーターを作ってみたくなったので、プロトタイプを作ってみた。 YandereSimulatorは本当によくできているなと思う。 主人公が殺人をしたあと、死体を発見した生徒が先生に報…

CharacterJointを設定して自分でRagDollを作ってみる

左がUnityのWizardで作った元々のRagDoll 右のポニーテールが自分でCharacterJointを設定して作ったRagDoll【Unity】プログラムでRagDollを自分で作る ボーン構造として Head ↑ Torso → Arm → Elbow ↑ HipMaster → Hip → KneeeそれぞれにRigidBodyを設定して…

GooglePlayに英語版アプリを公開する方法

七ならべの英語版を作ったので、英語版の作成方法をまとめておきます。 Unity側 Unity上では、 if (Application.systemLanguage == SystemLanguage.Japanese) English=false; else English=true;これでシステムが日本語かどうかを取得できます。AndroidOSで…

七ならべゲーム公開しました

大富豪を改造して作りました。 トランプの七ならべゲームです。GooglePlayで公開中 play.google.com 鬼パス! 七ならべゲーム ニコニコ動画に宣伝&実況動画を公開しました。 www.nicovideo.jp

FTLみたいなものを作ってみる(2)

経路探索を実装。 部屋を三つにして、スタートからゴールまで移動できた。このへんは以前も作ってますが、3Dとの位置合わせが難しかった記憶がありますが、とりあえずできました。 公式チュートリアルのRogueLikeGame的でもありますね。あっちは光線なげて大…

FTLみたいなものを作ってみる(1)

周回遅れですが、インディーズの有名ゲームFTLの動画を見まくっています。 凄い。このゲームモデル。 宇宙船同士でレーザーやミサイルで撃ち合えるのだけでなく、敵戦に乗り込んで攻撃できて、しかも敵も自分の艦に乗り込んでくる。 ドアをあけて真空を使っ…

オセロゲームを作る(2) 評価関数の学習を試みる

評価関数を学習させてみました。 勝った場合は、勝った方の手による局面にプラス。負けた方の局面にマイナス。 これをやると、それぞれが打った手で変わってない配置は、プラマイゼロで評価が変わりません。 本来は、強化学習は末端から係数をかけて、だんだ…

オセロゲームを作る(1)

オセロゲームを作ってみました。minMax探索のプログラムを作るのは久しぶりです。探索はnegaMax 評価関数は、終端は石数、途中は打手可能数+星+隅を取ったかどうかってだけのシンプルです。 Unityなので深くは読めないので、5手読みです。 一応ハッシュテ…

ThirdPersonShooterを作る(8)

RTSのRoyal Revolt2みたいな感じで作ってみようと思います。 今はまだまっすぐな1本道ですが、途中で道が曲がったりする感じの自動マップをやろうと思います。ローグライクみたいなフラクタル構造の部屋割りとかではないので単純ですね。 途中に敵のSpawnポ…

戦車のキャタピラが起伏にそって波打つ仕組み

AssetStoreにKawaiiTankとして無料の戦車が配布されているのでDownloadして動かしてみました。 起伏はterrainで作られていますが、戦車を起伏の上で動かすと、戦車は波打ちながら起伏を乗り越えて移動します。 そのへんの仕組みを見てみました。"Kawaii" Tan…

選択したキャラを特定の場所に移動させる

RTSでよくあるような選択したキャラを特定の場所に移動させる処理を作ってみました。 選択は、マウスクリックからドラッグして離した四角形で選択、再度クリックで、そこに移動させます。NavMeshは使わずに、自前の経路探索ルーチンを使っています。同じ座標…

ClothコンポーネントとSpringBoneの比較

Clothコンポーネントでスカート、髪の毛などを揺らしてみました。 これってまず全体を固定で赤くして、動くとこだけ緑に塗る方がいいかもね。固定が足りなくて、髪とか服が全部ぶっ飛んでビビった( ゚Д゚) 左がSpringBone、右がClothコンポーネント まだCloth…

簡単にSpringBoneを仕込めるスクリプト

PMCAで作ったモブ子さんに簡単にSpringBoneを仕込んで揺らせるようになりました。 debug=trueだとスプリングボーンのコライダーが黄色で見えます。 緑色はスプリングコライダーです。 初めにColliderを登録 髪の毛やスカートなどは、それぞれのルートの親ボ…

SpringBoneを実験中

髪の毛やスカートなど、3Dモデルにとって揺れものは避けて取れない。 ということで、次はこれに取り組んでみます。 ricopinさんが初めに作られたSpringBone.csは、物理エンジンを使わずにコードで物体同士の衝突を計算して揺れものを動かしている。 これは改…

簡単コードで光線飛ばして経路探索

簡単な仕組みで自前で経路探索をやってみました。 画面上のWaypointに球をおいておくと、球と球の間で光線が飛ぶ=通行可能という仕組みで、経路パスを求めます。 次に、スタート球とゴール球を指定して、経路探索を呼ぶと、通行可能なパスを探索して最短経…

商店UIのフォーカスを移動できるようにする

アイテムのリストをCSVファイルで用意しておいて、商店の商品一覧に表示できるようにしました。1画面に6アイテムごとで、PREV/NEXTボタンでページを遷移できます。 ゲームパッドでの操作を考えるとフォーカスが必要ですが、初めはフォーカスはありませんで…

手足にコライダーを付けて、キックやパンチ攻撃を実現

手足にコライダーをつけてキックやパンチの判定に使います。剣にコライダーをつけて斬撃を判定するのと仕組みは同じです。 UI的に手動でコライダーをつけることもできますが、それだとキャラを追加するごとに作業が要ります。 プログラムでコライダーを装着…

コードで商店UIを動的生成する

コードによるUI作成で行いたいと思って試作中です。 NPCキャラが商店になっていて、キャラクターに近づくと商店のウインドウが表示されます。 状態遷移としては、 商品一覧を表示する 一覧:キャンセルを押すと画面は消える 一覧:購入を押すと、確認ダイア…

武器によって手の位置をIKで微調整

PMCAで女子キャラを増やしました。メガネのおばさんキャラも作ったので、お店のNPC店員にしようと思います。 右手に持たせる武器の塊位置がPMCAキャラで共通化できるので、キャラを増やした場合の作業が少なくて楽です。 使用するアニメーションはピストルを…

複数の武器をもたせて切り替える処理

実行時に、Startで武器の塊を読み込んで、右手の骨にセットする。 キャラクターによって位置や向きが微妙に違うので、キャラごとに微調整する void Start () { rb = GetComponent<Rigidbody>(); anim = GetComponent<Animator>(); Transform Rhand = anim.GetBoneTransform(HumanB</animator></rigidbody>…

Clothコンポーネントでスカートの揺れを表現

衣服や布をシミュレートするClothという機能があるので試してみました。モブ子は元々PMDデータで、MMD2MecanimでMecanimなHumanoidに変換してますが、HumanoidにはスカートのBoneはないので、そのへんは生かされない。 なので走ったりで太ももが上部に移動す…

斬撃

Unityちゃんに剣をもたせる 剣にコライダーを付ける 斬撃アニメーションで剣を振る ターゲットに衝突して、OnTriggerEnter()で、 衝突箇所に赤いキューブを配置して、アニメーションを一時停止するけっこう剣が突き刺さってからEnterが発生してますね。 vo…

右手に銃を持たせる

右手のボーンのtransformを取得し、読み込んだライフル銃を子供として配置。 銃の向きを回転させて、位置を右手で持っているように見える位置に微調整。 といったプロセスで銃を持たせてみました。 違うキャラモデルだと微妙に位置が変わるので、キャラごと…

IKを使った足の接地

Unity でキャラクタの足の位置を地面の形状に合わせてみた - 凹みTips上記の記事を参考に足の接地をやってみました。 ただ、PMCAのモブ子さんはつま先のboneがもともと無いようです。 接地とは、身体のコライダーが地面のコライダーと接地しているのは同じで…

ThirdPersonShooterを作る(3)

高低差のある場合に射撃できるようにしました。これまでは同じY座標平面が前提だったので。 テストするために高低差のあるステージを作ったんですが、なぜか坂を登ってる途中でプレイヤーがすり抜けます。 この坂道を登っている途中でなぜか瞬間的に地面に落…

交通信号を追加してみる

結構、信号機ってややこしい。 コライダーを信号機のある場所に設置して、○秒で赤と青(車にとって)を切り替える。 コライダーに接触し、かつ赤信号機の方を向いているなら、車は停車 コライダーに接触し、かつ赤信号機の方を向いているなら、人は進む(車…

navMeshAgentで自動車を走らせる

すんなりできるかと思ったらはまりました。 navMeshAgentでspeed=20ぐらいにするとコーナーを曲がりきれません。 今までみたいに遅いなら普通に曲がれます。 AutoBrakingはありますがそれでも足りません。 内部的にrigidbody使ってるんですかね? 遠心力の影…

ターゲットへの視線を可視化

ガンパレード・マーチキタ━━━━(゚∀゚)━━━━!! ゾンビおじさんはポニーテール娘だけをターゲットにしているので近くに来るとSetDestinationするので、経路パスを可視化してみた。 ま、でも、視線なんだから経路で曲がってる必要はない気がする。 むしろサイコキネ…

高度差のあるNavMeshと定期巡回

NavMeshについて一通り学習中。 スロープのある経路を作って、定期巡回のコードを作りました。 ゾンビなので、ターゲットが近い場合は、定期巡回を外れてそっちに襲ってくる。 StandardAssetのToonシェーダーがいい感じ! 高度差のある経路でBakeします。 定…

VR SDKなしでスマホVRをやってみる

SSD換装でクリーンインストールしたので、JDKやAndroidSDKなどを入れてAndroidスマホでアプリを動かせる環境を再構築した。 そろそろCardboardでVRやってみようとGoogle VR SDKを入れるも、buildはできるけど、Android 4.4以上の実機でしか動かせない。 うち…