健康与距离变量不减少
问题描述:
设置机制的目的是当用户输入(“Fire1”)时更新距离,并且如果光线广播发现的距离小于或等于1.5,则扣除健康状况。健康与距离变量不减少
但是,当我点击鼠标按钮的距离变量没有更新,因此也不是健康。
**
混战系统代码
**
的#pragma严格
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;
}
* 请解释所有的变化。 *
答
除了Man of Snow建议的解决方案(当然是正确的)之外,另一个错误是update()
函数中较低的“u”。你想要调用的真实函数是Update()
(带有上面的“U”)。 “update()
”是一个实际上从未被调用的函数,不是由Unity调用每个帧的函数。
尝试用''ApplyDamage'替换''Apply Damage''' – Cilan
它没有工作 – Bigwater
@ManofSnow建议的更改是正确的,因为现在它不能调用ApplyDamage函数。除此之外,尝试在你的更新函数中添加一些'Debug.LogWarning(...)'。哪些触发? 'if(Physics.Raycast ...'是否真实(即碰到什么东西)?你确定Vector3.forward是正确的方向吗? –