前の記事でレーダーに表示する敵のマークのサイズを、プレイヤーと敵の高さの差によって変えてみます。プレイヤーより高い位置にいる敵の画像は大きく、低い敵は小さく表示します。
// 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の新しい値の計算に使います。サイズに上/下限を設定しています。