Игрок не умирает, когда пуля касается его - PullRequest
0 голосов
/ 08 мая 2019

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);
        }
    }
}

1 Ответ

0 голосов
/ 08 мая 2019

Похоже, вы уничтожаете пулю, а не игрока.Попробуйте вместо этого уничтожить 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

...