【问题标题】:Sprites wont detect collision精灵不会检测到碰撞
【发布时间】:2021-10-29 22:17:37
【问题描述】:

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


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


    【解决方案1】:

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

    -TheHackintoshProgrammer;

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
    • 上面有2个圆形碰撞器,一个用于范围,一个用于检测碰撞。
    猜你喜欢
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多