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

Unityオブジェクト同士が一定距離離れたら実行する

Unity

はじめに

こんにちは!今日はUnityを使って、Cube(プレイヤー)がSphereから一定の距離離れたらSphereが落下する仕組みを作る方法を紹介します。初心者でも分かりやすく説明するので、一緒にやってみましょう!

オブジェクトを作る

まず、シーンにCubeとSphereを追加します。

  1. Hierarchyウィンドウで右クリックします。
  2. 3D Objectを選び、Cubeをクリックします。これがプレイヤーになります。
  3. 同じようにしてSpherePlaneも追加します。

Cubeにスクリプトを追加する

次に、Cubeにプレイヤーの動きを制御するスクリプトを追加します。

  1. Projectウィンドウで右クリックし、Create > C# Scriptを選びます。
  2. スクリプトに「PlayerMove」という名前を付けます。
  3. このスクリプトをダブルクリックして開き、以下のコードを入力します:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour
{
    void Update()
    {
        float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3.0f;
        float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f;
        transform.position = new Vector3
        (
            transform.position.x + dx, 0.5f, transform.position.z + dz
        );
    }
}
  • スクリプトを保存して閉じます。
  • HierarchyウィンドウでCubeを選び、この新しいスクリプトをドラッグ&ドロップしてアタッチします。

Sphereにスクリプトを追加する

次に、Sphereに距離をチェックして落下させるスクリプトを追加します。

  1. 同じようにProjectウィンドウで新しいC#スクリプトを作成し、「SphereMove」と名前を付けます。
  2. スクリプトを開いて、以下のコードを入力します:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class SphereMove : MonoBehaviour
{
    public void SphereGravity()
    {
        GetComponent<Rigidbody>().useGravity = true;
    }
}
  • スクリプトを保存して閉じます。
  • HierarchyウィンドウでSphereを選び、このスクリプトをドラッグ&ドロップしてアタッチします。

Rigidbodyの追加

最後に、SphereにRigidbodyを追加します。

  1. HierarchyウィンドウでSphereを選びます。
  2. Inspectorウィンドウで「Add Component」をクリックし、「Rigidbody」を選びます。
  3. UseGravityにチェックを入れてSphireが落ちないようにしておきます。

これで設定は完了です!

距離に基づいて動作するスクリプト

次に、距離をチェックして落下させるスクリプトを追加します。

  1. Projectウィンドウで新しいC#スクリプトを作成し、「ObjectDistance」と名前を付けます。
  2. スクリプトを開いて、以下のコードを入力します:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class ObjectDistance : MonoBehaviour
{
    public GameObject objA;
    public GameObject objB;
 
    void Update()
    {
        Vector3 cube = objA.transform.position;
        Vector3 sphere = objB.transform.position;
        float dis = Vector3.Distance(cube,sphere);
        
        if(dis > 8.0f){
            objB.GetComponent<SphereMove>().SphereGravity();
        }
    }
}
  • 空のオブジェクトを作成してスクリプトをアタッチして使用します
  • inspector画面から「objA」と「objB」を設定します。

動作確認

  1. Unityエディターの上部にある「再生」ボタンをクリックします。
  2. キーボードの矢印キーを使ってCubeを動かし、Sphereから離れてみましょう。
  3. 一定の距離を超えると、Sphereが落下するのを確認できます。

以上で、Cube(プレイヤー)がSphereから一定の距離離れたらSphereが落下する仕組みの作り方の説明は終わりです。ぜひ試してみてくださいね!

おすすめのアセット

「Platformer Project」は、Unityで簡単に2Dプラットフォーマーゲームを作成できるテンプレートです。このアセットは、初心者から経験豊富な開発者まで幅広く利用でき、スムーズなゲーム開発をサポートします。

特徴として、キャラクターの移動、ジャンプ、敵との戦闘など、基本的な動作がすでに組み込まれているため、すぐにゲームの制作に取り掛かれます。また、使いやすいインターフェースと豊富なドキュメントが揃っているので、設定やカスタマイズも簡単です。

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