Právě je pát lis 22, 2024 10:58 pm

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ] 
Autor Zpráva
 Předmět příspěvku: Pohyb objektu o urcity pocet BU
PříspěvekNapsal: úte úno 26, 2008 1:23 pm 
Offline
 ...
 ...

Registrován: stř říj 11, 2006 7:41 pm
Příspěvky: 158
Bydliště: Brno
Dobry den. Potreboval bych poradit jak napsat pythonni prikazy, aby se mi teleso pri stisku klavesy posunulo o dany pocet BU podel dane osy a zustalo stat (resp otocilo se kolem dane osy o dany pocet stupnu). Moje prozatimni pokusy vedly k tomu, ze se teleso sice da do pohybu, ale uz se nezastavi. Mym cilem je, aby se pri stisku klavesy o kousek posunulo (sesp. pootocilo), pricemz by si pamatovalo svou predchozi polohu a tato by se pri dalsim stisku pouze inkrementovala. Uff, doufam, ze jsem to napsal srozumitelne. Pro lepsi nazornost pridavam .blend


Přílohy:
Pohyb_Rotace.blend.zip [71.38 KiB]
357 krát
Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: úte úno 26, 2008 5:45 pm 
Offline
...........
...........
Uživatelský avatar

Registrován: sob zář 18, 2004 4:13 pm
Příspěvky: 1898
Bydliště: Slovensko, Bratislava
Riadok 13 presuň pod podmienku if a pridaj novú podmienku else, ktorá ten actuator vypne.
Kód:
if dopredu.isPositive()
    jizda.setDRot(0.0, 0.1, 0.0, 1)
    GameLogic.addActiveActuator(jizda, 1)
else:
    GameLogic.addActiveActuator(jizda, 0)

Alebo ešte jedna možmosť.
Actuator nebudeš vypínať, ale budeš mu meniť(nulovať) premenné.
Kód:
if dopredu.isPositive()
    jizda.setDRot(0.0, 0.1, 0.0, 1)

else:
    jizda.setDRot(0.0, 0.0, 0.0, 1)

GameLogic.addActiveActuator(jizda, 1)


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: úte úno 26, 2008 7:14 pm 
Offline
 ...
 ...

Registrován: stř říj 11, 2006 7:41 pm
Příspěvky: 158
Bydliště: Brno
Ajooo! :idea: Vzdyt je to tak snadne, kdyz se to vidi. Ja snad mam nejakou zatemnenou mysl. Mel bych se vratit na zakladni skolu a naucit se zaklady programovani. Dekuju za osviceni


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: pon bře 03, 2008 4:41 pm 
Offline
 ...
 ...

Registrován: stř říj 11, 2006 7:41 pm
Příspěvky: 158
Bydliště: Brno
Tak jeste mala modifikace: Jak to provest, aby se objekt pohnul prave o dany pocet BU bez ohledu na to, jak dlouho podrzim klavesu. Zkratka by reagoval pouze na stisk, cili na ten prvni impuls a ne na drzeni klavesy


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: pon bře 03, 2008 5:46 pm 
Offline
...........
...........
Uživatelský avatar

Registrován: sob zář 18, 2004 4:13 pm
Příspěvky: 1898
Bydliště: Slovensko, Bratislava
Cez skript to obmedzíš premennov, napríklad
Kód:
if dopredu.isPositive() and own.go == 1:
    jizda.setDRot(0.0, 0.1, 0.0, 1)
    own.go = 0

else:
    jizda.setDRot(0.0, 0.0, 0.0, 1)
    if jizda.isPositive() == 0:
        own.go = 1


Alebo aj takto sa dá:

http://metalair.tym.cz/zgerbiak/keyone.jpg


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: pon bře 03, 2008 7:32 pm 
Offline
 ...
 ...

Registrován: stř říj 11, 2006 7:41 pm
Příspěvky: 158
Bydliště: Brno
Zmineny postup tak nejak nespeje k vysledku. Objekt se pri stisku a drzeni klavesy vesele pohybuje dal, zatimco po uvolneni a dalsim stisku se ani nehne (properta "go" zustava na nule). Docela by me zajimalo, jak byl myslen radek
Kód:
if jizda.isPositive() ==0:

resp. co znamena, kdyz nejaky actuator je "positive"


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: pon bře 03, 2008 8:29 pm 
Offline
...........
...........
Uživatelský avatar

Registrován: sob zář 18, 2004 4:13 pm
Příspěvky: 1898
Bydliště: Slovensko, Bratislava
Ach jééé... sry, moja chyba.
Má to byť
Kód:
if dopredu.isPositive() == 0:


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: pon bře 03, 2008 9:02 pm 
Offline
 ...
 ...

Registrován: stř říj 11, 2006 7:41 pm
Příspěvky: 158
Bydliště: Brno
Dobra, ale toto stale neresi zakladni problem. Chapu to tak, ze v tom programu se deje asi toto: Ze zacatku je properta "go" na hodnote 1, po stisku klavesy se objekt posune a "go" se nastavi na 0. po uvolneni se pohyb zastavi, a "go" se vrati na 1. Jenze pohyb pokracuje vzdy tak dlouho, dokud je stisknuta klavesa. Nakonec jsem to vyresil tak, ze jsem zapnul u klavesoveho senzoru pulse mode(TRUE triggering) a nastavil prodlevu na 1. a stejne to neni uplne ono-objekt o danou hodnotu poskoci, misto aby se plynule posunul, mohl bych zvysit dobu prodlevy, ale to by vyzadovalo drzet klavesu min. po danou dobu aby se objekt posunul po kazde o stejnou vzdalenost.
EDIT: Krom toho se posune pokazde o jinou vzdalenost(jakoby nahodne) Zacinam z toho videt zelene


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: úte bře 04, 2008 11:09 am 
Offline
.....
.....

Registrován: sob srp 20, 2005 5:03 pm
Příspěvky: 539
Hm, nepochopil som uplne presne, co to vlastne ako chces. Ak chces, aby sa ti po jednom stiku klavesy, nejaku dobu (v mojom priklade 5sekund) objekt dalej pohyboval, mozes to urobit pridanim premennej "Timer" (add property->Timer).Nazveme ju "cas" a hodnotu nastavime na 5.0
Kod by potom vypadal nejak takto:
Kód:
if dopredu.isPositive():
    own.cas=0
if own.cas<5:
    jizda.setDLoc(0.1,0,0,1)
    GameLogic.addActiveActuator(jizda,1)
GameLogic.addActiveActuator(jizda,0)

A nezabudni tiez pridat jeden sensor "Always", aby ti to vyplo aktuator.

Ak vsak chces aby sa ti posunul presne na niektore miesto, je najlepsie, pouyit napriklad empty objekt ku ktoremu sa bude pohybovat. Co sa presnej rotacie tyka, to uz sa musis vyznat v maticiach. ja som kedysi urobil nejaky skript, kde si mohol presne zadat o kolko stupnov sa ma objekt otocit, bez matic, ale to bolo zbytocne zlozite. Hodne zdaru.

EDIT> inak toto je otazka do otazok o Game blenderu :D


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: úte bře 04, 2008 8:00 pm 
Offline
 ...
 ...

Registrován: stř říj 11, 2006 7:41 pm
Příspěvky: 158
Bydliště: Brno
Diky vsem za rady- byly velmi podnetne. Na zaklade nich jsem sestavil jakysi model toho, co skutecne potrebuji: jakysi dvoukolak rizeny krokovym motorem. Vzhledem k tomu, ze se jedna o ponekud jinou ulohu tak jsem zalozil nove vlakno (a v prislusne sekci),pokud by vas to zajimalo tak konkretne zde: viewtopic.php?p=58027#58027


Nahoru
 Profil  
 
 Předmět příspěvku:
PříspěvekNapsal: ned bře 16, 2008 7:23 pm 
Offline
 ...
 ...

Registrován: stř říj 11, 2006 7:41 pm
Příspěvky: 158
Bydliště: Brno
Mno tak se mi s Dvoukolakem moc nezadarilo :oops:

Kód:
A nezabudni tiez pridat jeden sensor "Always", aby ti to vyplo aktuator.

Jak to prosim bylo mysleno? K cemu mam ten sensor pripojit?


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 11 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 11 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz