Problem

Pytania nie pasujące do pozostałych for w tej kategorii.
Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Re: Problem

Postautor: lukaszfito » 24 sty 2014, 22:55

A nie możesz sparentowaniem pustego obiektu do kamery i latarki do pustego obiektu? Swoją drogą to latarka powinna dobrze działać, bo mi działa jak jest dzieckiem kamery. Jeśli latarka zmienia kształty, to może coś jest poplątane z orientation.

Co do wyłączenia latarki, to wystarczy Ci jedna linijka:

Kod: Zaznacz cały

bge.logic.getCurrentScene().objects["latarka"].energy=0


energy przyjmuje wartości od 0 do 10, tak jak energy w ustawieniach latarki :D

Awatar użytkownika
Woobuz
Posty: 274
Rejestracja: 16 wrz 2012, 12:47
Lokalizacja: Bielsko Biała
Kontaktowanie:

Re: Problem

Postautor: Woobuz » 24 sty 2014, 22:58

Nie nie, latarka działa dobrze. Kiedy sparentuję jakiś nowy obiekt, załóżmy cube, to zachowuje się tak jak opisałem :P
"Bo w każdym z nas jest Chaos i Ład, Dobro i Zło. Ale nad tym można i trzeba zapanować. Trzeba się tego nauczyć."

Awatar użytkownika
Woobuz
Posty: 274
Rejestracja: 16 wrz 2012, 12:47
Lokalizacja: Bielsko Biała
Kontaktowanie:

Re: Problem

Postautor: Woobuz » 24 sty 2014, 23:31

Hmm, jest może skrypt na to, że gdy latarka jest zgaszona, to tym samym guzikiem ją włączamy?
"Bo w każdym z nas jest Chaos i Ład, Dobro i Zło. Ale nad tym można i trzeba zapanować. Trzeba się tego nauczyć."

Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Re: Problem

Postautor: lukaszfito » 25 sty 2014, 0:18

Jest:

Kod: Zaznacz cały

# pobieramy z logic tylko to co jest potrzebne
from bge.logic import getCurrentController

# pobieramy właściciela (latarkę)
owner=getCurrentController().owner

# pobieramy status pierwszego sensora
#     (kostka logiki Keyboard - nazwa sensora nieważna)
status=owner.sensors[0].status

#pobieramy wartość energy latarki
ene=owner.energy

# sprawdzamy czy wciśnięto przycisk
#     (jeśli zmienimy 1 na 3, to sprawdzimy czy przycisk jest puszczony)
if status==1:
    # jeśli jest światło, to zgaś
    if ene==1:ene=0
    #jeśli nie, to zapal
    else:ene=1
   
# ustalamy wartość energy latarki
owner.energy=ene
Ostatnio zmieniony 25 sty 2014, 12:56 przez lukaszfito, łącznie zmieniany 2 razy.

Awatar użytkownika
Woobuz
Posty: 274
Rejestracja: 16 wrz 2012, 12:47
Lokalizacja: Bielsko Biała
Kontaktowanie:

Re: Problem

Postautor: Woobuz » 25 sty 2014, 10:31

Nie wiem czemu, ale nie działa :P

Może robię coś źle. Bo wiesz, mam dwie latarki, ale ten kod użyłem do jednej nazwanej "latarka". Wkleiłem cały kod, nazwałem "latarka" i ustawiłem na kostkach logiki klawisz i ten właśnie kod.
"Bo w każdym z nas jest Chaos i Ład, Dobro i Zło. Ale nad tym można i trzeba zapanować. Trzeba się tego nauczyć."

CacholaPL

Re: Problem

Postautor: CacholaPL » 25 sty 2014, 12:37

A nie można w kostkach logiki dać, że po naciśnięciu guzika światło przechodzi do drugiego stanu, a w tym stanie jest ustawione "End Object"

Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Re: Problem

Postautor: lukaszfito » 25 sty 2014, 12:54

Rzeczywiście - mój błąd :oops: . Następnym razem będę sprawdzał albo napiszę rano :D . Zmieniłem skrypt w poprzednim poście, bo błędny nam niepotrzebny. Ulepszyłem go tak, byś nie musiał specjalnie ustalać nazwy latarki a nawet sensora Keyboard - wystarczy, że ten sensor będzie pierwszy (lub jedyny) na liście sensorów latarki.

Jeśli chcesz, żeby dwie latarki gasły i zapalały się w tym samym momencie, to musisz dodać do importu getCurrentScene, o tak:

Kod: Zaznacz cały

from bge.logic import getCurrentController,getCurrentScene


I na końcu kodu dodać linijkę zmieniającą wartość drugiej latarki, o tak:

Kod: Zaznacz cały

getCurrentScene().objects["nazwa_drugiej_latarki"].energy=ene


Musisz tutaj wstawić nazwę drugiej latarki.

Jeśli chcesz żeby latarki zmieniały się przemiennie :D , to ostatnią linijkę daj tak:

Kod: Zaznacz cały

getCurrentScene().objects["nazwa_drugiej_latarki"].energy=1-ene


A jeśli sprawdzisz status w ten sposób:

Kod: Zaznacz cały

if status==1 or status==3:


to światło będzie włączać się tylko przy wciśniętym przycisku (musisz tylko ustawić żeby w projekcie, enegry latarki było równe 0, bo inaczej będzie gasnąć jak wciśniesz przycisk).

W sumie ciekawie by było jakbyś zrobił noktowizor :D który potrzebowałby baterii, ale za to miał większy zasięg. Możesz wykorzystać Filter 2D z Gray Scale, to kolorki znikną :shock: w noktowizorze.

Awatar użytkownika
Woobuz
Posty: 274
Rejestracja: 16 wrz 2012, 12:47
Lokalizacja: Bielsko Biała
Kontaktowanie:

Re: Problem

Postautor: Woobuz » 25 sty 2014, 15:29

Wielkie dzięki. Teraz działa idealnie.

Następna sprawa. Jak można zauważyć, podczas poruszania się słychać kroki. Jednak po wciśnięciu dwóch klawiszy odpowiedzialnych za poruszanie, dźwięk zaczyna się rozdwajać, tak jakby był przypisany do każdego klawisza. Da się jakoś zrobić, żeby dźwięk był jednakowy, żeby działał normalnie, gdy po prostu się poruszamy?
"Bo w każdym z nas jest Chaos i Ład, Dobro i Zło. Ale nad tym można i trzeba zapanować. Trzeba się tego nauczyć."

Awatar użytkownika
lukaszfito
Posty: 140
Rejestracja: 28 gru 2013, 1:37
Lokalizacja: Gdańsk
Kontaktowanie:

Re: Problem

Postautor: lukaszfito » 25 sty 2014, 17:09

Mało korzystam z kostek logiki, ale chyba wystarczy połączyć wszystkie sensory ruchu (czyli Keyboard WSAD) do kontrolera "Or" a kontroler do aktywatora dźwięku. Wtedy dźwięk powinien odpalić się, gdy choćby jeden sensor wykryje wciśnięcie klawisza, więc nawet jak wszystkie wciśniesz to dźwięk będzie pojedynczy, bo prowadzi do niego tylko jedna nić :)

Awatar użytkownika
Woobuz
Posty: 274
Rejestracja: 16 wrz 2012, 12:47
Lokalizacja: Bielsko Biała
Kontaktowanie:

Re: Problem

Postautor: Woobuz » 25 sty 2014, 17:56

Ok, to wiem. Problem w tym, że chciałbym ustawić za pomocą Freq. w Sensorze Keyboard odległość między dźwiękami. Jednak nie wiem jak to zrobić, żeby działało. Albo włącza się pojedynczy dźwięk, albo jest tak jak podczas biegu - żadnych przerw.

Spróbuję z przedłużeniem dźwięku. Może wtedy będzie dobrze :P
"Bo w każdym z nas jest Chaos i Ład, Dobro i Zło. Ale nad tym można i trzeba zapanować. Trzeba się tego nauczyć."


Wróć do „Inne”

Kto jest online

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