Unity 2D ίδια κατάσταση για διαφορετικό ζήτημα εχθρούς

ψήφοι
0

Κάνω 2D εξόδου και im πάρει περίεργο bug - όταν χτύπησα έναν εχθρό, κάθε άλλος αυτού του τύπου να πάρει την ίδια κατάσταση. Θέλω να πω εγώ ήθελα να εισέλθουν «θυμωμένος» κατάσταση, όταν παίκτης μου χτύπησε ένα από αυτά με το σπαθί.

Πρόβλημα μοιάζει με αυτό:

-> Hit Enemy1 με το σπαθί,

-> Enemy1 γίνεται ζημιά και θα «θυμωμένος» κατάσταση,

-> Enemy2 / 3/4/5 δεν είχε πάρει ζημιές, αλλά πήγε στο θυμωμένος κατάσταση.

Αν πάρει ζημιά είναι ατομική για κάθε μία από αυτές, έτσι γιατί είμαι υποφέρει αυτό το είδος της κατάστασης. Νομίζω ότι η αιτία είναι η βλάβη μου Script. Αν κάποιος έχει μια ιδέα θα ήμουν ευτυχής να το ακούσω. Ευχαριστώ εκ των προτέρων.

public void DealDmg()
{
    blob = FindObjectOfType<EnemyScript>();

    if (attackPos.gameObject.activeSelf == true)
    {

        Collider2D[] enemiesToDamage = Physics2D.OverlapCircleAll(attackPos.position, attackRange, whatIsEnemy);

        for (int i = 0; i < enemiesToDamage.Length; i++)
        {
            EnemyScript enemyScript = enemiesToDamage[i].GetComponent<EnemyScript>();

            enemyScript.GetComponent<EnemyScript>().TakeDmg(damage);

            if (gameObject.GetComponent<PlayerControls>().facingRight == true)
            {
                enemyScript.GetComponent<Rigidbody2D>().AddForce(new Vector2(30f, 20f), ForceMode2D.Impulse);

                StartCoroutine(ResetValues);

                blob.CalmLogic();

            }
            else if (gameObject.GetComponent<PlayerControls>().facingRight == false)
            {
                enemyScript.GetComponent<Rigidbody2D>().AddForce(new Vector2(-30f, 20f), ForceMode2D.Impulse);

                StartCoroutine(ResetValues);

                blob.CalmLogic();

            }
        }
        attackPos.gameObject.SetActive(false);
    }
}
    public IEnumerator ResetValues()
{
    gotHit = true;
    blob.gotAngry = true;
    yield return new WaitForSeconds(resetValuesDelay);
    gotHit = false;
    yield return new WaitForSeconds(resetValuesDelay);
    blob.gotAngry = false;
}
Δημοσιεύθηκε 20/10/2018 στις 12:34
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Track κατάσταση εχθρό στο εσωτερικό του εχθρού

Αυτή τη στιγμή μοιάζει κωδικό σας λειτουργεί με τον παίκτη και ο παίκτης έχει την παρακολούθηση των κρατικών εχθρού. Αυτό είναι λάθος. Script player σας δεν πρέπει ποτέ να ξέρει τίποτα για (πολύ λιγότερο τροποποιήσετε!) Τις ιδιότητες του εχθρού σας. Όλες ο παίκτης θα πρέπει να κάνετε είναι:

  • όταν ο παίκτης χτυπά με επιτυχία έναν εχθρό, ο παίκτης λέει τον εχθρό «έχετε χτυπήσει!»
  • Το σενάριο εχθρός παίρνει στη συνέχεια ότι οι πληροφορίες (όπως το πόσο μεγάλη ζημιά, τι ζημιά πληκτρολογήστε ήταν, κλπ) και να ασχοληθεί με τον εαυτό της: τη μείωση της βλάβης ( «είμαι φορώντας πανοπλία;»), ενισχύοντας τη ζημία ( «είμαι αδύναμος στη φωτιά ? ") και ούτω καθεξής και ούτω καθεξής ... σαν να πάρει θυμωμένος με τον παίκτη και το προκύπτον εν ψυχρώ πριν την ηρεμία της και πάλι.

script player σας δεν χρειάζεται να γνωρίζουν (και δεν με νοιάζει!) σχετικά με τις πληροφορίες αυτές, καθώς και κάθε απόπειρα να προσπαθήσουμε και να χειριστεί εδώ είναι ανοησία. Από τη στιγμή που θα αλλάξει τον τρόπο πολλούς εχθρούς υπάρχουν, ή να δημιουργήσετε ένα νέο είδος εχθρού που κάνει κάτι άλλο μπορείτε να καταλήξετε με ένα τεράστιο σωρό από άχρηστα σκουπίδια δεν μπορείτε να διαχειριστείτε.

Απαντήθηκε 20/10/2018 στις 15:47
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more