2016-01-28 17 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

这看起来像是一个工作公式 –