1 Вопрос: Игрок не умирает, когда пуля касается его

вопрос создан в Wed, May 8, 2019 12:00 AM

IMAGE

Мой игрок не умирает, когда в него попадают пули из моего танка. Я думаю, что проблема в методе OnTriggerEnter2d. Пуля проходит через игрока, не убивая их.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{
    float moveSpeed = 7f;
    Rigidbody2D rb;
    Player target;
    Vector2 moveDirection;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        target = GameObject.FindObjectOfType<Player>();
        moveDirection = (target.transform.position - transform.position).normalized * moveSpeed;
        rb.velocity = new Vector2(moveDirection.x, moveDirection.y);
        Destroy(gameObject, 3f);  
    }

    void OnTriggerEnter2D ( Collider2D col)
    {
        if(col.gameObject.name.Equals ("Player"))
        {
            Debug.Log("Hit");
            Destroy(gameObject);
        }
    }
}
    
0
  1. Ничто в вашем коде даже не пытается уничтожить или иным образом повредить игрока
    2019-05-08 16: 17: 12Z
  2. void OnTriggerEnter2D (Collider2D col) {if (col.gameObject.name.Equals ("Player")) {Debug.Log ("Hit"); Destroy (GameObject); }}
    2019-05-08 16: 36: 13Z
  3. @ isaa Вы должны проверить все, что может повлиять на это действие, здесь . Кстати ... пропустите проверку тегов, вы используете имя gameObject.
    2019-05-08 16: 41: 57Z
  4. Destroy(gameObject); уничтожает пулю.
    2019-05-08 16: 44: 40Z
  5. Нет проблем с кодом. Если пуля прошла, проблема должна быть в настройке Collision Matrix или Collider.
    2019-05-08 16: 50: 01Z
1 ответ                              1                         

Похоже, вы уничтожаете пулю, а не игрока. Попробуйте вместо этого уничтожить gameObject, принадлежащий коллайдеру игрока:

void OnTriggerEnter2D ( Collider2D col)
{
    if(col.gameObject.name.Equals ("Player"))
    {
        Debug.Log("Hit");
        Destroy(col.gameObject);
    }
}

Когда вы говорите Destroy(gameObject), gameObject само по себе относится к GameObject, к которому присоединен этот компонент. Это то же самое, что сказать this.gameObject. Так как вы назвали компонент bullet, я предполагаю, что этот скрипт прикреплен к объекту Bullet, и, следовательно, ваш игрок не будет уничтожен.

См. Component.gameObject

    
0
2019-05-08 18: 42: 01Z
источник размещен Вот