blender3d.cz
http://blender3d.cz/forum/

Pohyb objektu o urcity pocet BU
http://blender3d.cz/forum/viewtopic.php?f=7&t=5611
Stránka 11

Autor:  Louise Cypher [ úte úno 26, 2008 1:23 pm ]
Předmět příspěvku:  Pohyb objektu o urcity pocet BU

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

Autor:  zgerbiak [ úte úno 26, 2008 5:45 pm ]
Předmět příspěvku: 

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)

Autor:  Louise Cypher [ úte úno 26, 2008 7:14 pm ]
Předmět příspěvku: 

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

Autor:  Louise Cypher [ pon bře 03, 2008 4:41 pm ]
Předmět příspěvku: 

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

Autor:  zgerbiak [ pon bře 03, 2008 5:46 pm ]
Předmět příspěvku: 

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

Autor:  Louise Cypher [ pon bře 03, 2008 7:32 pm ]
Předmět příspěvku: 

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"

Autor:  zgerbiak [ pon bře 03, 2008 8:29 pm ]
Předmět příspěvku: 

Ach jééé... sry, moja chyba.
Má to byť
Kód:
if dopredu.isPositive() == 0:

Autor:  Louise Cypher [ pon bře 03, 2008 9:02 pm ]
Předmět příspěvku: 

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

Autor:  kracho [ úte bře 04, 2008 11:09 am ]
Předmět příspěvku: 

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

Autor:  Louise Cypher [ úte bře 04, 2008 8:00 pm ]
Předmět příspěvku: 

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

Autor:  Louise Cypher [ ned bře 16, 2008 7:23 pm ]
Předmět příspěvku: 

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?

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/