2016-01-28 45 views
0

我試圖獲得一個數字,x%在最小值和最大值之間。根據距離計算遊戲對象損壞

因此,舉例來說,如果我有以下幾點:

min = 5; 
max = 10; 

// `c` is a Collider type 
float distance = Vector3.Distance(c.transform.position, transform.position); 
float percent = distance/radius; 

所以,現在我所期待的,是當object B接近object A的半徑的邊緣爲我的最終數目爲接近5 。當object B更靠近object A的中心時,我希望最後的數字更接近10

我有上述到目前爲止,但我不知道什麼是最終的公式是得到一個Object Damage Amount。基本上認爲這是一個距離地雷,距離越遠,你受到的傷害就越小,越接近你受到的傷害就越多。

+1

這似乎是一個數學問題。你需要決定它如何隨着距離而縮放。它是否線性縮放?成倍?還有別的嗎? –

+0

現在我正在使用線性..但它會我喜歡有其他方法的想法以及.. –

+0

float result = damage * 1/Mathf.Sqr(distance);這個基於重力的物理方程。越接近,結果就越大。 B但不是線性的,它會形成一條曲線,以便在距離越近時結果的增加越快。 – Everts

回答

1
var result = (1.0f - percent) * (max - min) + min; 

只是確保距離始終< =半徑(即百分比> = 0.0和百分之< = 1.0)

+0

這看起來像是一個工作公式 –