Spawnowanie po wejściu w wyzwalacz 6012 14

O temacie

Autor HardKamilPL

Zaczęty 23.03.2013 roku

Wyświetleń 6012

Odpowiedzi 14

HardKamilPL

HardKamilPL

Użytkownicy
posty10
  • Użytkownicy
[tresc usunieta]
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Spawnowanie po wejściu w wyzwalacz
#1 2013-03-23, 11:13(Ostatnia zmiana: 2013-03-23, 11:16)
Nie widzę w tym nic dziwnego, dałeś tutaj warunek żeby spawnowało się własnie 10 i do tego "gdzieś daleko":
Vector3(i *2.0,0,0)Wywal tą pętlę, zastanów się gdzie chcesz żeby dane obiekty się pojawiały i wpisz odpowiednią pozycję.
Lol, to jest po prostu skopiowany przykładowy skrypt z dokumentacji który właśnie powinien dokładnie to robić xD
"Instantiates 10 copies of prefab each 2 units apart from each other"

Nie zrobisz gry kopiując gotowe kawałki kodu w ogóle ich nie rozumiejąc. Ten skrypt jest bardzo prosty, a na dodatek jest na stronie gdzie jest dokładnie wyjaśnione jak działa ta funkcja. Wystarczyło przeczytać (no i wiedzieć co to jest pętla, ty najwyraźniej nie wiesz).

#pragma strict
class Spawner extends MonoBehaviour
{
var obj : GameObject;

function OnTriggerEnter (other : Collider) : void
{
Instantiate (obj, this.GetComponent(Transform).position, Quaternion.identity);
}
}

HardKamilPL

HardKamilPL

Użytkownicy
posty10
  • Użytkownicy
[tresc usunieta]
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Spawnowanie po wejściu w wyzwalacz
#3 2013-03-23, 12:26(Ostatnia zmiana: 2013-03-23, 12:34)
Skoro znasz Javę, proponuję zainteresować się C# zamiast JScriptem. Paradoksalnie jest do niej o wiele bardziej podobny. JScript jest językiem "swobodniejszym", ale z czasem ta swoboda zaczyna trochę ciążyć. Chociaż oczywiście można używać go tak samo "sztywno" jak C#, po prostu wszędzie deklarując typy i tworząc nagłówki klas jak w moim przykładzie powyżej. Tak naprawdę główna widoczna różnica między C# i Javą a JScript.NET to ta w zapisie pól metod:
C# i Java:
typ nazwa (); //metoda
typ nazwa;    //pole
JScript.NET:
function nazwa () : typ; //metoda
var nazwa : typ;         //pole

HardKamilPL

HardKamilPL

Użytkownicy
posty10
  • Użytkownicy
[tresc usunieta]
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Jednak skoro mam skrypt, jak zrobić żeby po 8 sekundach (wiem, yieldWaitFor tralalala)
Tego pytania nie rozumiem. Napisz po polsku.

Ale co wpisać w Destroy?
Jeśli chodzi ci o to jaki argument masz podać, to jest nim gameObject do usunięcia.

Więc jak to będzie wyglądało, żeby obiektpo kilku sekundach znikał?
Tego pytania też nie rozumiem, napisz precyzyjniej co chcesz się dowiedzieć.

HardKamilPL

HardKamilPL

Użytkownicy
posty10
  • Użytkownicy
[tresc usunieta]
 


HardKamilPL

HardKamilPL

Użytkownicy
posty10
  • Użytkownicy
[tresc usunieta]
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Spawnowanie po wejściu w wyzwalacz
#9 2013-04-09, 16:09(Ostatnia zmiana: 2013-04-09, 16:10)
Error ten oznacza w średniowiecznej łacinie
Cytuj
Oczekiwano ';', wstaw średnik na końcu
Do tego powinno podać ci w której linijce. Ja zgaduję że chodzi o linijkę
yield return new WaitForSeconds(6.0f);Jestem przekonany że tak Yielda się nie używało, możesz pokazać stronę w dokumentacji na podstawie której to napisałeś?

HardKamilPL

HardKamilPL

Użytkownicy
posty10
  • Użytkownicy
[tresc usunieta]
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Spawnowanie po wejściu w wyzwalacz
#11 2013-04-09, 16:42(Ostatnia zmiana: 2013-04-09, 21:21)
OK, Yield w C# faktycznie tak wygląda, ja znałem go trochę inaczej, bo pisałem w JScript.NET. Swoją drogą dziwnie to w C# wygląda, najpierw return, a potem ciąg dalszy funkcji.

Sprawdź w której linijce brakuje ci tego średnika, bo tak na oko ciężko teraz powiedzieć.

//edit:
WTF, w czym ty w końcu piszesz :lol2:
Skopiowałeś mój kod JScript.NET, a Yielda wstawiasz jak w C#. Nic dziwnego że mi on tam nie pasował i że nie działa :lol2:
W JScript.NET ta linijka powinna wyglądać tak:
yield WaitForSeconds (6);

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja

Adanos
Administrator

Spawnowanie po wejściu w wyzwalacz
#12 2013-04-09, 20:39(Ostatnia zmiana: 2013-04-09, 20:41)
HardKamilPL, ogarnij wpierw podstawy jakiegoś języka, bo jedynie co będziesz potrafił, to wklejać bezmyślnie i liczyć, że się skompiluje bez błędów.

Zacznij od pisania prostych programów typu dodawanie liczb, wypisywanie czegoś itp. (oczywiście nie w Unity).

Poza tym yield się tak nie używa. yield powinno się (należy) używać, gdy ma się co iterować. W twojej klasie class Spawner extends MonoBehaviour
nie ma czego iterować. yield w tym przypadku jest zbędny (return też bo funkcja OnTriggerEnter nie zwraca wartości).

HardKamilPL

HardKamilPL

Użytkownicy
posty10
  • Użytkownicy
[tresc usunieta]
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Spawnowanie po wejściu w wyzwalacz
#14 2013-04-10, 16:20(Ostatnia zmiana: 2013-04-10, 19:17)
Adanos ci napisał. Tutaj nie ma czego iterować, Yield nie zadziała. Możesz spróbować zmienić typ funkcji na IEnumerator, albo najlepiej sprawdzać i dekrementować pozostały czas w Update (przyda ci się Time.deltaTime).

BTW: nie wierzę że znasz C# skoro tutaj nie radzisz sobie z takimi elementarnymi zadaniami. Człowieku, kilka postów temu nie potrafiłeś rozpoznać pętli for napisanej tak tradycyjnie że bardziej się nie dało!
for (var i : int = 0; i < 10; i++) {


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry