【Unity】ハンドルで開閉するゲートに重力を加える
ハンドルを回して開閉するゲートに重力を加えます。前の記事では、マウスドラッグによってハンドルとゲートを両方動かしていましたが、今回はゲートだけを動かして、ゲートの速度を使ってハンドルを回転させてみました。 using S… 続きを読む »
ハンドルを回して開閉するゲートに重力を加えます。前の記事では、マウスドラッグによってハンドルとゲートを両方動かしていましたが、今回はゲートだけを動かして、ゲートの速度を使ってハンドルを回転させてみました。 using S… 続きを読む »
ゲートの移動範囲がずれないように修正しました。 前の記事ではハンドルの回転だけを制限していましたが、ジョイントやコライダーの衝突を使ってゲートの動きを制限して、ゲートが制限まで達したときにハンドルを固定するようにします。… 続きを読む »
マウスドラッグでハンドルを回転させて、ゲートを開閉してみます。 前の記事のバルブを回す処理をバルブにつけるスクリプトで行います。 using System.Collections; using System.Collec… 続きを読む »
レバーを使って機械をオンオフしてみます。 まずレバーを作ってHingeジョイントを付けます。レバーの根本で、レバーの回転に垂直な方向に軸を設定しました。レバーが元の位置に戻るようにSpringを使います。また、Limit… 続きを読む »
プレイ中にマウスでクリックした場所のテクスチャの色を変更してみます。 まずシーン上のPlaneオブジェクトのマテリアルに設定するテクスチャをスクリプトで新規作成して、白く塗りました。 [SerializeField] G… 続きを読む »
前の記事でカメラを回転させるときに、カメラを縦横に動かして柱の角から覗けるようにします。 FirstPersonControllerクラスではカメラの移動はUpdateCameraPosition()で行うので、ここにカ… 続きを読む »
曲がり角から覗き見るように、一人称視点のプレイヤーのカメラを横に傾けます。今回はカメラの回転だけをやってみました。 Qキーで左、Eキーで右にリーンします。FPSコントローラーでカメラの回転をMouseLookクラスのLo… 続きを読む »
マウスカーソルをくるくると円形にドラッグして、バルブのオブジェクトを回してみます。 まずバルブにコライダーとリジッドボディ、ヒンジジョイントを付けます。リジッドボディのAngular Dragで抵抗を設定します。 ヒンジ… 続きを読む »
マウスカーソルを円形にくるくる動かして値を増減させてみます。 空のゲームオブジェクトにスクリプトを付けます。 using System.Collections; using System.Collections.Gene… 続きを読む »
一人称キャラの手元を作って、カメラの動きに少し遅れてついてくるようにしてみます。 まず、人型のモデルの腕以外を削除して、ボーンを付けて、懐中電灯をもたせました。 今回はこの状態で固定して、ボーンを削除してUnityに持っ… 続きを読む »
ドアを開閉中にドアがプレイヤーに当たると、キー入力がなくても自動でプレイヤーを後ろに移動させます。 ドアの開閉中はプレイヤーの移動や回転をロックしているので、ドアが引っかかると一旦ドアの開閉をやめてプレイヤーを移動させて… 続きを読む »
スタンダードアセットのFPSコントローラーでしゃがめるようにしてみました。 FirstPersonControllerでは、カメラの位置をUpdateCameraPosition()で更新しているので、ここで高さを変えら… 続きを読む »
ドアをスムーズに開閉させてみます。ドアを掴んでいる間はプレイヤーのカメラをロックして、マウスドラッグでドアを開閉しています。 x = CrossPlatformInputManager.GetAxis(“Mouse X”… 続きを読む »
走っている時に引き戸を素早く開けられるようにします。 if (CrossPlatformInputManager.GetButtonDown(“Fire1”) && hit.collider.tag == “Slidin… 続きを読む »
ドアを開けるときと閉まった時に音を付けてみます。 // 閉まっている if (state == 0) { // プレイヤーがドアを触った時 if (clicked && !previousClicked) { audio… 続きを読む »
オブジェクトを持つ時にカーソルがあった場所を掴んで移動させてみます。 // オブジェクトを持つ時 effort = item.transform.InverseTransformPoint(hit.point); // … 続きを読む »
掴んだオブジェクトがプレイヤーの視線方向の軸に沿って回転できるようにしました。 // アイテムを移動させる else if (state == 2) { itemRb.velocity = (transform.forw… 続きを読む »
前の記事の勘違いを修正しました。 前の記事では、プレイヤーとItemの正面のなす角が小さくなるように回転させたいのに、内積をそのまま使っていました。 コサインは角度が小さいと1になって90度のときに0になるので、内積を1… 続きを読む »
左クリックを押している間はアイテムを持ち上げて、右クリックを押すと視線方向にそのアイテムを投げます。 前の記事のスクリプトのアイテムを移動させる箇所に投げる処理を追記します。 // アイテムを移動させる else if … 続きを読む »
一人称視点でオブジェクトを掴んで移動させます。掴んでいる間も、物理演算で他のアイテムや床と衝突するようにします。 前のスクリプトに追記して、近くでアイテムにレイがあたっているときにマウスの左クリックをすると、アイテムを掴… 続きを読む »