facebook twitter hatena line email

Unity/Csharp/位置

提供: 初心者エンジニアの簡易メモ
2024年7月19日 (金) 22:28時点におけるAdmin (トーク | 投稿記録)による版 (2点間の距離取得)

移動: 案内検索

中間位置

Vector3 center = Vector3.Lerp(fromObj, toObj, 0.5f);

3dの回転

Unity/3d/回転 [ショートカット]

方向

以下それぞれ2つは同じ意味

new Vector3(0f, 0f, 0f)
Vector3.zero
new Vector3(1f, 1f, 1f)
Vector3.one
new Vector3(2f, 2f, 2f)
Vector3.one * 2;
new Vector3(0, 1, 0)
Vector3.up
Vector3(0, -1, 0)
Vector3.down
Vector3(1, 0, 0)
Vector3.right
Vector3(-1, 0, 0)
Vector3.left
Vector3(0, 0, 1)
Vector3.forward
Vector3(0, 0, -1)
Vector3.back

指定場所へ徐々に移動

Update()内に記述し、毎フレーム処理するとよい。 返されるpositionは、少し移動した座標となる。

void Update()
{
    Vector3 startPosition = transform.localPosition;
    Vector3 endPosition = new Vector3(100f, 0f, 0f);
    float speed = 50f;
    float step = speed * Time.deltaTime;
    this.transform.localPosition = Vector3.MoveTowards(
                        startPosition,
                        endPosition,
                        step
                    );
}

参考:https://docs.unity3d.com/ja/560/ScriptReference/Vector3.MoveTowards.html

2点間の距離取得

float distance = Vector3.Distance(characterObj.transform.position, targetObj.transform.position);

ターゲットのちょっと手前の座標を取得

// 距離の3手前の位置を計算するための距離
float distanceBack = 3f;

// 方向ベクトルを計算
Vector3 direction = (targetPosition - myPosition).normalized;

// 3px手前の位置を計算
Vector3 positionThreeUnitsBack = targetPosition - direction * distanceBack;