ニュース

Top  >   28. 手・コントローラ・視線  >   Q, 物を投げたときに、手を離した方向へ飛ばしたい

Q, 物を投げたときに、手を離した方向へ飛ばしたい

2026/03/18

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

A,結論

投げ方向を自然にしたい場合は、手放した瞬間の線形速度と角速度を Rigidbody に渡す構成にしてください。

原因 / 背景

  • 単に前方へ force を加えるだけでは、実際の手の振りと一致せず不自然になります。
  • XR Grab 系コンポーネントの投擲設定や速度追従を使うと改善しやすいです。

実装 / 手順

  1. 掴んでいる間は手の動きから速度を計算し、Release 時に Rigidbody へ適用します。
  2. Throw Smoothing や Velocity Scale がある場合は実機で調整してください。
  3. 重さや Drag も結果に影響するため、飛びすぎる・落ちすぎるときは物理パラメータも合わせて見直します。

サンプルコード

using UnityEngine;

[RequireComponent(typeof(Rigidbody))]
public class ThrowableObject : MonoBehaviour
{
    [SerializeField] private float throwMultiplier = 1.0f;

    private Rigidbody _rb;

    private void Awake()
    {
        _rb = GetComponent<Rigidbody>();
    }

    public void ApplyThrow(Vector3 linearVelocity, Vector3 angularVelocity)
    {
        _rb.isKinematic = false;
        _rb.linearVelocity = linearVelocity * throwMultiplier;
        _rb.angularVelocity = angularVelocity;
    }
}

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

難易度:Level 3(中級)
対象プラットフォーム:PC,Android,VR,Unity
関連キーワード:Hand Tracking,XR Hands,投げる,放り投げる,物理,速度

Level 3-5 向けバナー 1Level 3-5 向けバナー 2