【发布时间】:2021-05-29 00:23:32
【问题描述】:
我制作了一个对敌人造成伤害的脚本。它连接到带有作为触发器的盒子对撞机的武器上。每当武器击中某个游戏对象时,我都会从中获得生命值,然后减去伤害。问题是不仅敌人被击中,武器对象也被击中。
我不知道为什么会这样。我不完全理解统一中的碰撞。据我所知,它应该可以工作。
编辑: 10000 小时后我自己修复了它,我重新定位了所有东西,并在主要对象上攻击了一个新对象,现在它可以工作了。
如果学到了什么: 不要用同一个物体进行攻击和受到伤害。
代码:
public class MeleeAttackScript : MonoBehaviour
{
public float Range = 1.0f;
public float AttackSpeed = 1.2f;
public float AttackCooldown = 0f;
public float Damage = 5f;
bool Collision = false;
BoxCollider RangeCollider;
Collider HitObject;
public void Awake()
{
RangeCollider = GetComponent<BoxCollider>();
RangeCollider.size = new Vector3(1, 1, Range);
RangeCollider.center = new Vector3(0, 0.00001f, (RangeCollider.size.z+1)/2);
}
public void Update()
{
if (AttackCooldown > 0)
{
AttackCooldown -= Time.deltaTime;
}
if (Mathf.Clamp(AttackCooldown, 0, (1 / AttackSpeed)) == 0 && Collision && HitObject.gameObject.tag == "Object")
{
Attack();
Collision = false;
}
}
private void OnTriggerStay (Collider collider)
{
if (collider.GetComponent<Collider>().GetType() == typeof(CapsuleCollider))
{
Debug.Log(collider.name);
HitObject = collider;
Collision = true;
}
}
public void Attack()
{
HitObject.gameObject.GetComponent<LifePointScript>().CurrentLifePoints -= Damage;
AttackCooldown = 1 / (AttackSpeed);
}
}
图片: Visualized
【问题讨论】:
-
我不明白这个问题。那么,武器也在攻击玩家?
-
@ken y 它会自损