我正在按照教程在 Unity 中制作游戏,但我的 JavaScript/UnityScript 遇到了一个特殊问题:
#pragma strict
var Health = 100;
function ApplyDamage (TheDamage : int)
{
Health -= TheDamage;
if(Health <= 0)
{
Dead();
}
}
function Dead()
{
Destroy (gameObject);
}
这是我针对敌人游戏对象的脚本,但是,尽管我有近战系统的逻辑,你必须点击他两次然后他就会死,但它不起作用,每当我的玩家角色走进敌人时无需点击即可自动销毁。
我也会在这里发布我的近战系统:
#pragma strict
var TheDamage : 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("ApplyDamage", TheDamage, SendMessageOptions. DontRequireReceiver)
);
}
}
有人可以帮我解决这个问题吗?这似乎是一个随机错误。
最佳答案
您为近战系统发布的代码缺少第一个 if 语句的大括号 {}
,导致它仅在鼠标悬停时执行 var hit : RaycastHit;
单击,并在每次调用 Update 时执行主体的其余部分。
关于unity-game-engine - 敌人逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25276003/