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 ("प्लेयर") {Debug.Log ("हिट"); नष्ट (gameObject); }}
    2019-05-08 16: 36: 13Z
  3. @ isaa आपको इस क्रिया पर पड़ने वाले हर चीज़ की जाँच करनी चाहिए, यहां । Btw .. जाँच टैग छोड़, अपने का उपयोग कर GameObject नाम।
    2019-05-08 16: 41: 57Z
  4. Destroy(gameObject); बुलेट को नष्ट कर देता है।
    2019-05-08 16: 44: 40Z
  5. कोड से कोई परेशानी नहीं है। यदि गोली चल जाती है, तो समस्या टकराव मैट्रिक्स या कोलाइडर सेटअप पर होनी चाहिए।
    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 के रूप में कहने के समान है। चूंकि आपने घटक बुलेट का नाम दिया है, इसलिए मैं अनुमान लगा रहा हूं कि यह स्क्रिप्ट बुलेट ऑब्जेक्ट से जुड़ी हुई है, और इस तरह आपका खिलाड़ी नष्ट नहीं होगा।

    देखें: Component.gameObject

        
    0
    2019-05-08 18: 42: 01Z
स्रोत रखा गया यहाँ