【Unity】ジョブシステムで敵にプレイヤーが見えているかを判定する
ジョブシステムで、徘徊するキャラクターにプレイヤーが見えているかを判定してみました。レイキャストはRaycastCommandを使って分散処理します。 概要 シーンに10000体のナビメッシュエージェントを徘徊させます。… 続きを読む »
ジョブシステムで、徘徊するキャラクターにプレイヤーが見えているかを判定してみました。レイキャストはRaycastCommandを使って分散処理します。 概要 シーンに10000体のナビメッシュエージェントを徘徊させます。… 続きを読む »
階段を実際のサイズで作ると、FPSキャラクターなどで階段をのぼるときなどに、段差が高すぎて画面がガタついてしまいました。 FPSキャラのアセットによっては、高い段差の端で引っかかることもあります。そこで、Blenderで… 続きを読む »
スクリプトでアイテムが重ならないようにランダムに配置してみました。 ランダムの位置を設定 Random.insideUnitCircleメソッドは、半径1の円の内部のランダムな位置を返します。その位置に値をかけると半径を… 続きを読む »
「Aim Constraint」コンポーネントを使って、常に特定のゲームオブジェクトの方を向かせてみます。 まず、シーンにある猿のゲームオブジェクトに、Aimコンストレイントコンポーネントを付けました。 このオブジェクト… 続きを読む »
LODグループコンポーネントを使って、詳細さの違うメッシュをまとめたオブジェクトにコライダーとRigidbodyを付けてみました。 HDRPのサンプルシーンの床や天井に設置されたライトでは、LODグループコンポーネントを… 続きを読む »
リジッドボディやジョイントをつけた動的オブジェクトのOccluder staticのチェックを入れると、奥のオブジェクトが消えるのが見えるときがあります。 また、Occludee staticのチェックを入れていると、動… 続きを読む »
アイテムにつけたスクリプトに、レイの当たった場所を掴んで動かす処理を書いてみました。 まずクリックした時に呼ぶアイテムのメソッドの引数に、レイの当たった位置を渡して、アイテムではそれをローカル空間に変換します。メソッドを… 続きを読む »
障害物を避けるように、発射した球の弾道を逸してみました。 まずプレイヤーの正面へ球を飛ばします。 using System.Collections; using System.Collections.Generic; u… 続きを読む »
コライダーのcontactOffsetを使ってみました。 Boxコライダーの付いたCubeにSphereを衝突させます。OnCollisionEnterでCubeを赤くして、OnCollisionExitで白に戻します。… 続きを読む »
コライダーのClosestPointOnBoundsとClosestPointの違いを調べてみました。Boxコライダーだとわからなかったので、上のようにカプセルコライダーを使いました。 FPSプレイヤーの位置を設定し、C… 続きを読む »
出入り口にコライダーを置いて、ドアの出入りを判定してみました。 このドアはX軸方向に通過するので、トリガーExitのときのプレイヤーとコライダーの位置のX軸の値を比べるだけです。 private void OnTrigg… 続きを読む »
キー入力でドアをノックして勢いよく開きます。 まずCubeで簡単にドアを作って、Hinge Jointとスクリプト、オーディオソースコンポーネントを付けました。RigidbodyとBoxコライダーは元々付いています。 H… 続きを読む »
どのドアを通ってどの部屋に出入りしたかを、トリガーを使って判定してみます。 まず簡単に部屋と出入り口を一つ作り、出入り口を挟むようにコライダーを2つ置きました。 コライダーはIs Triggerにチェックが入っていて、出… 続きを読む »
使っていないはずのメッシュに関するエラーが出ていたので調べると、Mesh FilterとMesh Colliderに別々のメッシュがアタッチされていました。 メッシュコライダーを使っているときは両方とも差し替えるか、メッ… 続きを読む »
前の記事ではグレネードが爆発すると敵は毎回同じダメージを受けていましたが、転がったグレネードからの距離に応じてダメージ判定をして、敵の受けるダメージを変えてみます。 まずグレネードのスクリプトで敵との距離を調べてダメージ… 続きを読む »
グレネードを投げると数秒後に爆発して、敵やアイテムを吹き飛ばすようにします。 まず敵のスクリプトにパブリックなメソッドを作ります。 public void Explode(Vector3 center) { // 体力を… 続きを読む »
毎回狙ったところへまっすぐ飛ぶのも変だと思ったので、銃弾が飛ぶ方向をばらつかせてみました。 // ステートマシンのスクリプト [SerializeField] float dispersion = 0.02f; // ば… 続きを読む »
マウスを押している間は弾を連射するようにして、その間隔を調節してみます。 弾を連射するには前の記事のスクリプトのInput.GetMouseButtonDownをInput.GetMouseButtonに変えるだけです。… 続きを読む »
攻撃して敵が倒れた時に、その攻撃の力でラグドールが吹き飛ぶようにします。 敵を複製してラグドールを作ったので、敵とラグドールは全く同じボーンを持っています。敵の攻撃を受けたボーンの名前はわかるので、敵とラグドールの各ボー… 続きを読む »
発射した弾がどこかに当たるたびに、その後敵に当たったときのダメージを小さくしてみます。 敵の体のボーンに付けたスクリプトで、インスペクタで設定したダメージと弾の威力をかけて、実際に敵が受けるダメージを計算します。跳ねるた… 続きを読む »