【Unity】ミニマップの敵のサイズを高さによって変える

投稿者: | 2020-06-29

前の記事でレーダーに表示する敵のマークのサイズを、プレイヤーと敵の高さの差によって変えてみます。プレイヤーより高い位置にいる敵の画像は大きく、低い敵は小さく表示します。

// Update()
for(int n = 0; n< enemys.Count; n++)
{
    Vector3 enemyDir = enemys[n].transform.position;

    // 高さによってサイズ変える
    float d = enemyDir.y - player.position.y; // 高さの差
    Vector3 scale = enemys[n].image.localScale; // RectTransformのスケール
    d = Mathf.Clamp(d * 0.01f ,- 0.1f, 0.1f) + 0.2f; // 画像の大きさを計算
    scale.x = d;
    scale.y = d;
    enemys[n].image.localScale = scale; // 新しいスケールを代入


    enemyDir.y = player.position.y; // プレイヤーと敵の高さを合わせる
    enemyDir = enemys[n].transform.position - player.position;

    enemyDir = Quaternion.Inverse(player.rotation) * enemyDir; // ベクトルをプレイヤーに合わせて回転
    enemyDir = Vector3.ClampMagnitude(enemyDir, radarLength); // ベクトルの長さを制限

    // 赤点の位置を決める
    enemys[n].image.anchoredPosition = new Vector2(enemyDir.x * r + offset.x, enemyDir.z * r + offset.y);
}      

敵とプレイヤーの高さの差を、ミニマップに表示する敵画像のRectTransformのScaleの新しい値の計算に使います。サイズに上/下限を設定しています。

コメントを残す

メールアドレスが公開されることはありません。