Warunek dla skryptu

Problemy ze skryptami w BGE.
Awatar użytkownika
janek
Posty: 237
Rejestracja: 19 lip 2012, 14:23
Lokalizacja: Gdańsk

Warunek dla skryptu

Postautor: janek » 08 maja 2013, 20:19

Witam.

Aktualnie próbuje przerobić ten skrypt, tak aby ta linijka:
naczep.position = zaczep.position

była wykonywana tylko wtedy jeżeli wciśniemy przy tym klawisz (np:T).
Próbowałem wlepić tam funkcie ' if ' ale niestety mi to niedziała :(

Kod: Zaznacz cały

from bge import logic
cont = logic.getCurrentController()
own = cont.owner
scena = logic.getCurrentScene()
lista_obj = scena.objects
sensor = cont.sensors['Near']
zaczep = sensor.hitObject
naczep = own
own = cont.owner

naczep.position = zaczep.position

Awatar użytkownika
Dagon
Posty: 94
Rejestracja: 21 lip 2012, 15:30

Re: Warunek dla skryptu

Postautor: Dagon » 09 maja 2013, 12:46

A spróbuj dodać sensor keyboard i sprawdzaj czy ma wartość sensor.positive == True

Awatar użytkownika
janek
Posty: 237
Rejestracja: 19 lip 2012, 14:23
Lokalizacja: Gdańsk

Re: Warunek dla skryptu

Postautor: janek » 09 maja 2013, 15:12

No właśnie najpierw prúbowałem z sensora na wszelakie sposoby ale to nie dawało żadnego efektu :( . Dlatego chce to wymusic w skrypcie.

maks029
Posty: 4
Rejestracja: 02 gru 2012, 3:31

Re: Warunek dla skryptu

Postautor: maks029 » 10 maja 2013, 7:15

Musisz sobie jeszcze zaimportować w skrypcie moduł events. Twój skrypt powinien wyglądać następująco:

from bge import logic, events
cont = logic.getCurrentController()
own = cont.owner
scena = logic.getCurrentScene()
lista_obj = scena.objects
sensor = cont.sensors['Near']
zaczep = sensor.hitObject
naczep = own
own = cont.owner

# pobierz wcisniety klawisz
key = logic.keyboard.events

# sprawdz jaki klawisz zostal wcisniety
if key[events.TKEY] == logic.KX_INPUT_JUST_ACTIVATED:
zaczep.position = naczep.position

I to powinno zadziałać.

Awatar użytkownika
janek
Posty: 237
Rejestracja: 19 lip 2012, 14:23
Lokalizacja: Gdańsk

Re: Warunek dla skryptu

Postautor: janek » 11 maja 2013, 13:46

No niestety nie działa :( Cały czas kosnola wywala
błąd wg "position" i "naczep.position = zaczep.position".
A mimo to w poprzednim skrypcie to samo działa prawidłowo.

wysyłam pliczek:
http://www.mediafire.com/?08wganihwjj42ie



Są tam dwa skrypty (zwykły i po modyfikacji). Wystarczy sobie
przestawić controller na streaming/streaming2. Widać co się dzieje.

Awatar użytkownika
janek
Posty: 237
Rejestracja: 19 lip 2012, 14:23
Lokalizacja: Gdańsk

Re: Warunek dla skryptu

Postautor: janek » 13 maja 2013, 16:12

Już znalazłem:

Kod: Zaznacz cały

from bge import logic
cont = logic.getCurrentController()
own = cont.owner
scena = logic.getCurrentScene()
lista_obj = scena.objects
keyboard = cont.sensors['Keyboard']
near = cont.sensors['Near']
sensor = cont.sensors['Near']
zaczep = sensor.hitObject
naczep = own
own = cont.owner


if keyboard.positive and near.positive : naczep.position = zaczep.position


Wróć do „Python”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość