スポンサーリンク
スポンサーリンク
UnityUnityメモ

Unityオブジェクト同士が接近したら自動的に接続するシステムの作り方

Unity

はじめに

Unityで、プレーヤーが操作するCubeがSphereの一定距離内に入った瞬間に固定ジョイント(Fixed Joint)を使って接続し、一体として動くようにする方法を説明します。この方法を使うことで、CubeがSphereに近づいたときに自動的に接続され、一緒に動くようになります。

手順1: CubeとSphereの準備

  1. Unityを開く
  2. 新しいプロジェクトを作成するか、既存のプロジェクトを開きます。
  3. ヒエラルキー(Hierarchy)ウィンドウで右クリックし、「3D Object」→「Cube」を選んでCubeを作成します。
  4. 同様にして、**「3D Object」→「Sphere」**を選んでSphereを作成します。

手順2: Rigidbodyコンポーネントの追加

CubeとにRigidbodyコンポーネントを追加します。

  1. Cubeを選択し、インスペクター(Inspector)ウィンドウで「Add Component」ボタンをクリックし、「Rigidbody」を選びます。
  2. CubeにRigidbodyを追加し、以下の項目を設定します。

手順3: Cubeの操作スクリプトを作成

Cubeを操作するためのスクリプトを作成します。

  1. プロジェクト(Project)ウィンドウで右クリックし、「Create」→「C# Script」を選んで、新しいスクリプトを作成します。名前を「CubeMove」にします。
  2. スクリプトをダブルクリックして開き、以下のコードを追加します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class CubeMove : MonoBehaviour
{
    void Update()
    {
        float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3;
        float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3;
        transform.position = new Vector3 (
        transform.position.x + dx, 4, transform.position.z + dz
        );
    }
}

手順4:距離を測定し、固定ジョイントを追加するスクリプトを作成

CubeがSphereに近づいたときに固定ジョイントを追加するためのスクリプトを作成します。

  1. プロジェクトウィンドウで右クリックし、「Create」→「C# Script」を選んで、新しいスクリプトを作成します。名前を「JointOn」にします。
  2. スクリプトをダブルクリックして開き、以下のコードを追加します。
  3. 「JointOn」スクリプトをSphereにドラッグ&ドロップしてアタッチします。
  4. Sphereを選択し、インスペクターウィンドウで「JointOn」スクリプトの「Target」にCubeオブジェクトをドラッグ&ドロップして設定します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class JointOn : MonoBehaviour
{
    public GameObject target;
 
    void Update()
    {
        Vector3 cube = target.transform.position;
        float dis = Vector3.Distance(cube,this.transform.position);
 
        if(dis < 4.1f){
            SphereGravity();
        }
    }
 
    void SphereGravity()
    {
        GetComponent<Rigidbody>().useGravity = true;
        FixedJoint fj = this.gameObject.GetComponent<FixedJoint>();
        fj.connectedBody = target.GetComponent<Rigidbody>();
    }
}

手順5: FixedJointコンポーネントの追加

  • Sphereを選択してinspector画面のaddComponentから「FixedJoint」を検索して追加します。

手順6:実行とテスト

  1. 再生(Play)ボタンをクリックしてゲームを開始します。
  2. CubeがSphereに近づいたとき、Cubeの重力が有効になり、CubeとSphereが固定ジョイントで接続されることを確認します。
  3. 接続された後は、CubeとSphereが一体となって動くことを確認します。

まとめ

これで、プレーヤーが操作するCubeがSphereの一定距離内に入った瞬間に固定ジョイントを使って接続し、その後は一体として動くようになります。試してみてください!

スポンサーリンク
C-BA memo
タイトルとURLをコピーしました