首页 > 解决方案 > 精灵不会检测到碰撞

问题描述

抱歉格式不好,我不知道该怎么做。我正在使用 2020.3.21f1 并按照教程进行操作,当敌人圈子击中玩家时,他不会受到伤害。当它们发生碰撞时,它们根本不会重叠,但是 Debug.log 也没有注册,所以我认为圆形对撞机 2D 是问题所在。当敌人在范围内时,它仍然会向玩家移动。另一个问题(如果我不知道如何更改它,这将变成一个功能)是当敌人与玩家发生碰撞并且玩家推动它时,它会沿着它被推动的方向移动,直到它遇到一些东西这是我的教程下列的


using System.Collections;

using System.Collections.Generic;
using UnityEngine;

public class Enemy: MonoBehaviour
{
public float speed = 3f;
private Transform target;
[SerializeField] private float attackDamage = -10f;
private void Update(){
    if (target != null){
        float step = speed*Time.deltaTime;
        transform.position = Vector2.MoveTowards(transform.position, target.position, step);
    }
}

private void OnCollision(Collision2D other){
    if (other.gameObject.tag == "player"){
        Debug.Log("hit");
        other.gameObject.GetComponent<PlayerHealth>().UpdateHealth(attackDamage);
    }
}

private void OnTriggerEnter2D(Collider2D other) {
    if(other.gameObject.tag == "Player"){
        target = other.transform;
        Debug.Log(target);
    }
}
private void OnTriggerExit2D(Collider2D other) {
    if(other.gameObject.tag == "Player"){
        target = null;
        Debug.Log(target);
    }
}

}

标签: c#unity3d

解决方案


精灵本身不会检测到碰撞,您需要为此添加一个盒子碰撞器。如果您将该组件添加到播放器,然后修改您的代码以包含这些碰撞检测,那么它应该按预期运行。:)

-TheHackintosh程序员;


推荐阅读