Strona 2 z 4

Re: Problem

: 24 sty 2014, 22:55
autor: lukaszfito
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

Re: Problem

: 24 sty 2014, 22:58
autor: Woobuz
Nie nie, latarka działa dobrze. Kiedy sparentuję jakiś nowy obiekt, załóżmy cube, to zachowuje się tak jak opisałem :P

Re: Problem

: 24 sty 2014, 23:31
autor: Woobuz
Hmm, jest może skrypt na to, że gdy latarka jest zgaszona, to tym samym guzikiem ją włączamy?

Re: Problem

: 25 sty 2014, 0:18
autor: lukaszfito
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

Re: Problem

: 25 sty 2014, 10:31
autor: Woobuz
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.

Re: Problem

: 25 sty 2014, 12:37
autor: CacholaPL
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"

Re: Problem

: 25 sty 2014, 12:54
autor: lukaszfito
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.

Re: Problem

: 25 sty 2014, 15:29
autor: Woobuz
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?

Re: Problem

: 25 sty 2014, 17:09
autor: lukaszfito
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ć :)

Re: Problem

: 25 sty 2014, 17:56
autor: Woobuz
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