ニュース

Top  >   6. GameObject・Component・Transform  >   Q, 特定の距離に近づいたら扉が開くようにしたい

Q, 特定の距離に近づいたら扉が開くようにしたい

2026/03/18

メインコンテンツへスキップ
< すべてのカテゴリに戻る

A,結論

Vector3.Distance か Trigger Collider を使います。

原因 / 背景

  • 2点間の座標の差を計算し、一定値以下になった時にフラグを立てるロジックが必要だからです。
  • Transform の直接書き換えと物理演算を混ぜると不安定になりやすい点にも注意してください。

実装 / 手順

  1. Update 内で自分と扉の距離を測り、3m以内ならアニメーションを再生します。
  2. Collider、Rigidbody、FixedUpdate の関係を意識して設定を見直します。

サンプルコード

using UnityEngine;

public class DistanceDoorController : MonoBehaviour
{
    [SerializeField] private Transform target;
    [SerializeField] private float openDistance = 3.0f;
    [SerializeField] private Vector3 openedLocalEulerAngles = new Vector3(0f, 90f, 0f);
    [SerializeField] private float rotateSpeed = 180f;

    private Quaternion _closedRotation;
    private Quaternion _openedRotation;

    private void Awake()
    {
        _closedRotation = transform.localRotation;
        _openedRotation = Quaternion.Euler(openedLocalEulerAngles);
    }

    private void Update()
    {
        if (target == null)
        {
            return;
        }

        float distance = Vector3.Distance(transform.position, target.position);
        Quaternion goal = distance <= openDistance ? _openedRotation : _closedRotation;
        transform.localRotation = Quaternion.RotateTowards(transform.localRotation, goal, rotateSpeed * Time.deltaTime);
    }
}

※ 実機確認が必要な項目は、Editor だけで判断せず対象デバイスでも必ず動作確認してください。

難易度:Level 2(初心者)
対象プラットフォーム:PC,Android,iOS,Unity
関連キーワード:イベント,判定,接近,距離

Level 1-2 向けバナー