【Unity】レイの当たった場所を掴む
アイテムにつけたスクリプトに、レイの当たった場所を掴んで動かす処理を書いてみました。 まずクリックした時に呼ぶアイテムのメソッドの引数に、レイの当たった位置を渡して、アイテムではそれをローカル空間に変換します。メソッドを… 続きを読む »
アイテムにつけたスクリプトに、レイの当たった場所を掴んで動かす処理を書いてみました。 まずクリックした時に呼ぶアイテムのメソッドの引数に、レイの当たった位置を渡して、アイテムではそれをローカル空間に変換します。メソッドを… 続きを読む »
障害物を避けるように、発射した球の弾道を逸してみました。 まずプレイヤーの正面へ球を飛ばします。 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に変えるだけです。… 続きを読む »
攻撃して敵が倒れた時に、その攻撃の力でラグドールが吹き飛ぶようにします。 敵を複製してラグドールを作ったので、敵とラグドールは全く同じボーンを持っています。敵の攻撃を受けたボーンの名前はわかるので、敵とラグドールの各ボー… 続きを読む »
発射した弾がどこかに当たるたびに、その後敵に当たったときのダメージを小さくしてみます。 敵の体のボーンに付けたスクリプトで、インスペクタで設定したダメージと弾の威力をかけて、実際に敵が受けるダメージを計算します。跳ねるた… 続きを読む »
前の記事で敵の体のコライダーが付けたボーンにスクリプトを付けて、部位ごとに敵が受けるダメージを変えられるようにします。 using System.Collections; using System.Collections… 続きを読む »
飛び道具などの衝突判定をコライダーでやると、敵の胴に当たった後に手などに当たることで2回当たったことになってしまうようなことがあるようです。転がっている武器に当たって敵が倒れることも避けたいので、同じオブジェクトは一回だ… 続きを読む »
攻撃の当たり判定をコライダーで作ってみました。まず敵と武器にコライダーを付けます。 刀にはタグとレイヤーを設定し、Rigidbodyも追加します。 レイヤーを使って、武器がプレイヤーと衝突できないように設定しました。 こ… 続きを読む »
今までは生成した直後のラグドールのポーズがデフォルトのままなので、敵がラグドールに置き換わった時に、敵の姿勢が急に伸びたように見えていました。 そこで、生成したラグドールの各ボーンの位置・角度を破壊する直前の敵の各ボーン… 続きを読む »
前の記事でラグドールが伸びたりする問題はなくなりましたが、まだ倒れ方が不自然なので、ジョイントの動きに制限をつけてみます。 Character Jointを使うと、3つの軸に沿った回転を制限できます。コンポーネントのAx… 続きを読む »
HPが0以下になった敵をラグドールに切り替えます。 まず敵のラグドールを作るために敵を複製して、アニメーターやナビメッシュエージェントなどのコンポーネントを削除して、オーディオソースコンポーネントだけを残しました。 これ… 続きを読む »