• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c# skrypt nie chce dzialac chociaz zaden blad nie wyskakuje

Object Storage Arubacloud
0 głosów
146 wizyt
pytanie zadane 4 października 2018 w C# przez DaroTL Nowicjusz (180 p.)

Czy ktos moglby zobaczyc i powiedziec mi czemu to nie chce dzialac (nie ma zadnego errora)

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

public class EnemyProjectile : MonoBehaviour
{
    public float damage;


    void OnTriggerEnter2D(Collider2D collision)
    {
        
        if (collision.name == "Player")
        {
            if (collision.GetComponent<GamerStats>() != null)
            {
                collision.GetComponent<GamerStats>().DealDamage(damage);
            }
               
            
            Destroy(gameObject);
        }
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GamerStats : MonoBehaviour
{
    public float health, Maxhealth;



    void Start()
    {
        health = Maxhealth;
    }

    public void DealDamage(float damage)
    {

        health -= damage;
        CheckDeath();
    }

    void CheckDeath()
    {
        if (health <= 0)
        {
            Destroy(gameObject);
        }
    }

    void AutoHeal()
    {
        if (health > Maxhealth)
        {
            health = Maxhealth;
        }
    }


}

 

2 odpowiedzi

0 głosów
odpowiedź 4 października 2018 przez Kodeman Gaduła (4,480 p.)
Jeśli skrypt się nie wykonuje, to pewnie nie podpiąłeś go do żadnego GameObject
komentarz 4 października 2018 przez DaroTL Nowicjusz (180 p.)
Przepraszam zle sie wyrazilem

Kolizja i niszczenie pocisku działa Ale nie działa funkcja DealDamage()

Wartosc health pozostaje taka sama
komentarz 5 października 2018 przez Kodeman Gaduła (4,480 p.)
W takich wypadkach, tak jak powiedział kolega niżej, sprawdź, czy wnętrze ifa się wykonuje, np. poleceniem Debug.log(). Jeśli wykonuje się, to zmienna damage jest równa 0.

Jeśli wnętrze ifa się nie wykonuje, to obiekt, z którym koliduje pocisk nie posiada komponentu GamerStats
0 głosów
odpowiedź 5 października 2018 przez niezalogowany
Dlatego, że collision.GetComponent<GamerStats>()  jest nulem.
komentarz 5 października 2018 przez DaroTL Nowicjusz (180 p.)

dobrze ale jesli dopisuje

  public static GamerStats stats = new GamerStats();

to wyskakuje blad ze nie moge tak zrobic

You are trying to create a MonoBehaviour using the 'new' keyword.  This is not allowed.  MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all
UnityEngine.MonoBehaviour:.ctor()
GamerStats:.ctor()
GamerStats:.cctor() (at Assets/Scripts/GamerStats.cs:8)
 

jak inaczej moge to zrobic?

komentarz 16 października 2018 przez niezalogowany
Sorrki, że nie odpisałem wcześniej, udało Ci sie to rozwiązać? Bo to musisz podpiąć komponent pod playera a nie tworzyć nowy obiekt.

Podobne pytania

0 głosów
1 odpowiedź 3,894 wizyt
pytanie zadane 11 stycznia 2019 w C# przez niezalogowany
0 głosów
2 odpowiedzi 549 wizyt
pytanie zadane 25 września 2016 w C# przez Azrael Początkujący (440 p.)
0 głosów
0 odpowiedzi 285 wizyt
pytanie zadane 4 maja 2017 w C# przez Patryk8090 Użytkownik (520 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...