Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

Rigidbody2D.MovePosition

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public function MovePosition(position: Vector2): void;
public void MovePosition(Vector2 position);

パラメーター

position リジッドボディオブジェクトの新しい位置。

説明

Rigidbody オブジェクトを指定する位置へ移動します

リジッドボディを次の物理更新の間に position に移動させるのに必要な直線速度を計算することで、リジッドボディを指定した位置に移動させます。移動中は重力も線形抵抗も影響しません。これによりオブジェクトは空間上を既存位置から指定した position へと速やかに移動できます。

この要素はリジッドボディを指定した position に空間を通して素早く移動させることができるので、リジッドボディにアタッチされたどのようなコライダーも期待通りに反応します。つまり、衝突判定とトリガー判定が発生します。また、コライダーが衝突判定を発生させればリジッドボディの移動に影響し、次の物理更新の間は指定した position に到達するのを潜在的に止めます。リジッドボディが IsKinematic を指定されている場合、すべての衝突判定はリジッドボディ自身に影響せず、他の動的なコライダーにのみ影響します。

2D リジッドボディには移動速度について固定制限があります。そのため短すぎるタイムスケールで長距離を移動しようとすれば、次の物理更新の間にリジッドボディが指定した position に移動できない可能性があります。相対的に少ない距離の移動のみを推奨しています。

現在のポジションの変更は、次のフィジクスの更新時まで行われません。\n次のフィジクスの更新を待つことなく、この手法を再度呼び出すと、最後に呼ばれたものが使われる事になります。このため、 FixedUpdate がコールバックされている間に呼び出す事を推奨します。

var velocity: Vector2;
var rb2D: Rigidbody2D;

function Start() { rb2D = GetComponent.<Rigidbody2D>(); }

function FixedUpdate () { rb2D.MovePosition(rb2D.position + velocity * Time.fixedDeltaTime); }
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public Vector2 velocity; public Rigidbody2D rb2D; void Start() { rb2D = GetComponent<Rigidbody2D>(); } void FixedUpdate() { rb2D.MovePosition(rb2D.position + velocity * Time.fixedDeltaTime); } }