健康与距离变量不减少

问题描述:

设置机制的目的是当用户输入(“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; 



} 

* 请解释所有的变化。 *

+1

尝试用''ApplyDamage'替换''Apply Damage''' – Cilan

+0

它没有工作 – Bigwater

+0

@ManofSnow建议的更改是正确的,因为现在它不能调用ApplyDamage函数。除此之外,尝试在你的更新函数中添加一些'Debug.LogWarning(...)'。哪些触发? 'if(Physics.Raycast ...'是否真实(即碰到什么东西)?你确定Vector3.forward是正确的方向吗? –

除了Man of Snow建议的解决方案(当然是正确的)之外,另一个错误是update()函数中较低的“u”。你想要调用的真实函数是Update()(带有上面的“U”)。 “update()”是一个实际上从未被调用的函数,不是由Unity调用每个帧的函数。