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

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

Unity

武器によって手の位置を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以上の実機でしか動かせない。 うち…

動的に障害物を動かすNavMeshの使い方

NavMeshを初めてやってみました。予め経路探索をやっておいて、実行時に最短経路で移動させられる仕組みです。 動かせる障害物を設定できるようで、これを使うと動的に変化する環境を実現できるのでやってみようと思いました。 こちらの記事を参考にさせても…

IKを使って銃口を動かす

mecanimのhumanoidのキャラの手の動きなどはanimatorの動きで制御されていますが、銃を打つ場合など、銃口をターゲットに向けて打てるとよりリアルになります。 そこでIKを使って、スクリプトで銃口(というか右手)を動かす仕組みをやってみました。 こちら…

Unityちゃんのragdollのツインテールにもjointを入れてみる

ragdollは、boneにjointを入れて人形みたいにしたやつで、unity5のメニューからGameObject→3D Object→Ragdollと選ぶことでwizardが出てくる。 既存のhumanoid型のキャラクターの各関節をwizardにそって登録していくと、頭・腰・手足の部分がjoint関節に変更…

プレイヤーの前方にpointLightを置いてみる

directionLightを外して、pointLightのみに。 おー。なんか雰囲気出た。さすがゲームエンジン。 壁に接近すると懐中電灯が壁の向こうに行ってしまって変なことになる(´・ω・`) 色々と難しいね。 いやいや。そのためのSpotLightでしょ(*´ω`*)

弾が撃てるように

プレイヤーだけ弾が撃てるようになった。壁に当たると消滅 回転するようになったので困っていたが、 rigidbody.angularVelocity = Vector3.zero;これで回転運動が止まる。

30人がばらばらに移動

モブ子さん(rigidBody+カプセルコライダー)と壁(コライダーのみ)をprefabにしておいて動的生成で画面にばらまいて、 モブ子さんはランダム移動(前進して、立ち止まって、しばらくすると向きを変えるみたいな動き) 初期化の動的生成 using UnityEngine; …

mmd4mecanimとmacanim locomotion

Unityやり始めてすぐにやっていたゾンビとモブ子さんの戦いのprojectファイルが壊れて読めないので(涙)←ちゃんとUnitypackageで保存するべきだった。 Zombie カテゴリーの記事一覧 - AIプログラムとかUnityゲーム開発について 再現すべく当時やっていたこ…

Puppet2Dが半額

Puppet2Dが半額なんでめっちゃ買いたいんですが ↓こちらで知った。 assetsale.hateblo.jpAssetStoreで購入ボタンをぽちっと押してみると、Unity5では動かないかもしれない。作者に直接聞いてねのダイアログが(´・ω・`) 24時間セールか……forumでは最近の書き…

SetActiveでfalseした物を再度trueする

Unityでコード書いてて必ずはまることですが、SetActiveでfalseするとFindできなくなるので、再度trueできなくなります。 ゼビウスではエリアの切り替えを、全体ではfalseにして、それぞれ使いたい面だけtrueにしてます(1面実行中に2面の地上敵が出てこな…

日本語フォントを同梱する

unityでアプリを作るとフォントは標準のArialのままで表示される日本語は、 なんか中国語っぽい表記だったので、検索してみると こちらで解説があった。基本的には日本語フォントを同梱するらしい。 Unityゲーム開発所 - Unityで日本語フォントを使う ただし…

Unityゲーム開発の本のプログラムを動かしてみる

kindle本50%オフの時に買った「Unityゲーム開発」の本を読んでいます。Amazon.co.jp: Unityゲーム開発 オンライン3Dアクションゲームの作り方: 竹内 大五郎, 石黒 赳彦, 高橋 誠史, 香川 寛和, 河本 健太郎: 本www.amazon.co.jp なお本持ってなくても、ソフ…

export packageでtagとLayerは出力されない

前に作っていたクイズゲームが読み込むとFatalErrorになって読めなくなって困ったんですが 結局librayフォルダーを削除して読み込み直したら読めました。 どうも、Projectの中にProjectがあるような状態になっていた模様。同じproject内で、新しいゲームを作…

ニコニコ立体ちゃん(アリシアちゃん)の表情変化

ググっても情報全くなかったけどwプロ生ちゃんと同様、BlendShapeに表情パーツが登録されています。アクセスは SkinnedMeshRenderer SkinnedMesh2 = GameObject.Find("Alicia_solid").transform.FindChild("face").GetComponentInChildren<SkinnedMeshRenderer>();みたいな感じで</skinnedmeshrenderer>…

プロ生ちゃんの表情変化

プロ生ちゃんのblendShapeに各種表情を変化させるパーツの設定が並んでますが、アクセスとしては以下のやり方でうまく行きました。 こちらを参考にさせて頂きました。プロ生ちゃんの表情を変化させる - Onoty3Donoty3d.hatenablog.comGetComponentInChildと…

横断歩道シミュレーションゲームwwww

unity Game uploaderに投稿されてたけど、凄いwwww 横断歩道システム http://unitygameuploader.jpn.org/game/4818.html大衆シミュレーションでもあるし、GTAみたいな通行人轢き殺すゲームでもあるし、 なんかAIっぽい雰囲気もかなりするし、 軽快なBGM…

ヘリコプターを飛ばしてみる

こちらのFreeのヘリコプターを利用して https://www.assetstore.unity3d.com/en/#!/content/8128ヘリコプターを飛ばしてみました。 ローターは分離されてるので、ローターを回します。 rb = GetComponent<Rigidbody>(); rotor = GameObject.Find("Rotor_Control"); ry=0</rigidbody>…

PMCAで銃をもったモブ子さんを作る

遠距離攻撃の新しい子を追加しようと思い、 セーラー服さんを配布しているmato.sus304さんが作っているPMCAを使ってみました。 PMCAは、パーツを組合せてMMDを作れるコンストラクターアプリで、 キャラクターなんとか機のMMD版みたいな感じ。 mato.sus304さ…

Unity公式のSurvivalShooter

Unity公式のSurvivalShooterを読んでみました。 unitymemo @ ウィキ - Survival Shooterのおおまかな構造www63.atwiki.jp以前、動画のチューターを見ながらソースを指示通り修正していたら 動かなくて、エラー出まくったけど意味がわからなかった苦い思い出…