Re:Chiarimenti sugli script

#177947

GiganteBaba
Partecipante
  • Blenderista
  • Post sul Forum 122

ora è già  molto + chiaro. Per quanto riguarda il tipo che scappa, devi tenere presente ke il dominio dei valori ottenuti dal .orientation è [-1,1] che è il dominio della funzione seno e coseno. Tu cmq se vuoi lavorare con i gradi guarda per bene lo script linkato prima. Ovviamente la cosa + facile in questo caso è far guardare al poveretto il nemico con un track to, moltiplicare per -1 orientation dell’asse “Y” o “X” per farlo girare e magari sommargli un valore random (casuale).

Oppure ho un altro script per te usato per effettuare il track to senza l’attuatore, ma tutto in python. questo si calcola l’angolo tra i vettori usando il metodo AngleBetweenVecs e cerco di minimizzarlo. Tu invece di trackare (ottenere un angolo di 0 gradi), devi girarsi dalla parte opposta (angolo di 180 se non faccio una gaff).

Non ricordo bene come funziona questo script, studiatelo e prova. Insomma quello che stai tentando di fare richiede una cerca bravura nella programmazione, se non ce l’hai cerca i metodi più facili… Io mi arrendo 🙄 .

Code:
#immagina che la palla è il giocatore, ne prendo la posizione
XB=ball.localPosition[0]

YB=ball.localPosition[1]

#own_pos è la posizione della preda
own_pos = Vector(own.worldPosition)

direction=Vector((XB+OffsetSguardo)-own_pos[0], YB-own_pos[1], 0.0)

own_y = Vector(own.getAxisVect((0.0, 1.0, 0.0)))

own_y.z = 0.0

# calcola l’angolo in gradi
ang = AngleBetweenVecs(own_y, direction)

if direction.cross(own_y).z < 0.0: ang = -ang #print “angle”+ str(ang) if abs(ang)>2:

if ang >0:

leftright=-0.05

else:

leftright=0.05

controller.activate(LeftRight)

Non ho messo l’intero script, non tutte le variabili sono instanziate qua. Ti assicuro che con questo sono riuscito a fare un giochino di calcio dove un pupazzo va dietro la palla per colpirla e farla avanzare.