1 Câu hỏi: Người chơi không chết khi viên đạn chạm vào anh ta

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

HÌNH ẢNH

Người chơi của tôi không chết khi họ bị trúng đạn từ xe tăng của tôi. Tôi nghĩ vấn đề là ở phương pháp OnTriggerEnter2d. Viên đạn xuyên qua người chơi mà không giết họ.

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. Không có gì trong mã của bạn thậm chí còn cố gắng phá hủy hoặc làm hỏng người chơi
    2019-05-08 16: 17: 12Z
  2. void OnTrigger Entry2D (Collider2D col) {if (col.gameObject.name.Equals ("Player")) {Debug.Log ("Hit"); Phá hủy (gameObject); }}
    2019-05-08 16: 36: 13Z
  3. @ isaa Bạn nên kiểm tra mọi thứ có thể có tác động đến hành động này, tại đây . Btw .. bỏ qua việc kiểm tra thẻ, sử dụng tên gameObject của bạn.
    2019-05-08 16: 41: 57Z
  4. Destroy(gameObject); phá hủy viên đạn.
    2019-05-08 16: 44: 40Z
  5. Không có vấn đề gì với mã. Nếu viên đạn đi qua, vấn đề phải nằm ở cài đặt Collision Matrix hoặc Collider.
    2019-05-08 16: 50: 01Z
1 Câu trả lời                              1                         

Có vẻ như bạn đang phá hủy viên đạn chứ không phải người chơi. Thay vào đó, hãy thử phá hủy gameObject thuộc về trình va chạm của người chơi:

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

Khi bạn nói Destroy(gameObject), gameObject tự nó đề cập đến GameObject mà thành phần này được đính kèm. Nó giống như nói this.gameObject. Vì bạn đã đặt tên cho viên đạn thành phần, tôi đoán tập lệnh này được gắn vào một đối tượng Bullet, và do đó trình phát của bạn sẽ không bị phá hủy.

Xem: Hợp phần     

0
2019-05-08 18: 42: 01Z
nguồn đặt đây