设置机制,以便在用户输入(“Fire1”)时更新距离,并且如果光线投射发现的距离小于或等于1.5,则扣除健康。
但是,当我单击鼠标按钮时,距离变量不会更新,因此健康状况也不会更新。
**
近战系统代码
**
#pragma strict
var Damage : int = 50;
var Distance : float;
var MaxDistance : float = 1.5;
function update ()
{
if(Input.GetButtonDown("Fire1"))
{
var hit : RaycastHit;
if (Physics.Raycast (transform.position, transform.TransformDirection(Vector3.forward), hit))
{
Distance = hit.distance;
if(Distance < MaxDistance)
{
hit.transform.SendMessage("Apply Damage", Damage, SendMessageOptions.DontRequireReceiver);
}
}
}
}
敌人逻辑代码
#pragma strict
var Health : int = 100;
function ApplyDamage(Damage : int)
{
Health -= Damage;
}
* 请解释所有更改。 *
答案 0 :(得分:3)
除了Man of Snow建议的解决方案(当然是正确的)之外,另一个错误是update()
函数中较低的“u”。你想要的真正功能是Update()
(上面带有“U”)。 “update()
”是一个实际上从未被调用的函数,而不是由Unity调用的每个帧。