Greier ikke å beskrive problemet kort :P

Max scripts

Moderatorer: Super Moderatorer, Admins


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Greier ikke å beskrive problemet kort :P

Legg innav hardrock_ram » tir 20 sep, 2011

Jeg har et masterobjekt (A) som styrer posisjonen til et slaveobjekt (B). Hver gang masterobjekt A flyttes, så flyttes slaveobjekt B også, hele tiden slik at de har samme posisjon.

Problemet er at jeg ikke vil at slaveobjekt B skal ha en distanse lengre vekk fra et tredje objekt i scenen (objekt C) enn 556 units. Slaveobjekt B skal altså følge Masterobjekt A kun ut til en radius av 556 units fra objekt C. I position script- kontrolleren til slaveobjekt B måler jeg distansen, så det er ikke noe problem. Problemet er når avstanden går over 556 units, så vil jeg at slaveobjekt B skal peke samme retning som masterobjekt A (utifra objekt C`s utgangspunkt). Det skal bare ikke gå utover maksimal radius på 556 units. Hvordan skal jeg fikse det?

EDIT: Prøvde meg litt fram med normalisering av vektoren. Er ganske sikker på at det er det som må gjøres, men er usikker på hvordan det skal settes opp

En tegning under for å forklare hva jeg vil at skal skje:

Bilde
if your not living on a killing ground, you better make your own

Brukeravatar

havards
Innlegg: 211
Registrert: ons 13 des, 2006

Legg innav havards » ons 21 sep, 2011

Kode: Velg alt

(
   local center = dummy()
   local slave = point pos:[0, 50, 0]
   local master = point pos:[0, 100, 0]
   local posScript = ""
   local slaveMaxDistance = 50
   slave.position.controller = position_script()
   slave.position.controller.addNode "master" master
   slave.position.controller.addNode "center" center
   slave.position.controller.addConstant "maxDist" slaveMaxDistance
   posScript += "vec = master.pos - center.pos\n"
   posScript += "center.pos + (amin maxDist (length vec)) * normalize vec"
   slave.position.controller.setExpression  posScript
)

Noe ala dette du er ute etter?
02:14 Misfortune • hun skjuler så jævlig mye i smutthølet
http://folk.ntnu.no/havardsc/site/wordpress/


Trådstarter
hardrock_ram
Innlegg: 1502
Registrert: ons 07 feb, 2007
Sted: Kristiansand

Legg innav hardrock_ram » ons 21 sep, 2011

Akkurat det jeg var ute etter :D
Du har jo svaret på alt :P

Utrolig kjekk den amin - funksjonen. Jeg gjorde det samme med if-setning hvor skilte mellom over og under en makslengde på length-funksjonen, men det er jo mye mer elegant å bruke amin! Og isteden for å bare legge på vektoren til objekt C (center), så kåla jeg med "in coordsys center ()" osv. Skjønner ikke hvorfor det ikke funka, men det var rotete som F ... uansett da :P
if your not living on a killing ground, you better make your own

Brukeravatar

tassel
Innlegg: 3986
Registrert: man 26 sep, 2005
Sted: Oslo
Kontakt:

Legg innav tassel » ons 21 sep, 2011

Nice Haavard. Dette fikk ideene til å blomstre opp.. Nå blir det vel enda flere uferdige maxscripts i mappa mi her :wink:


Gå tilbake til «Max scripts»

Hvem er online

Brukere i dette forumet: Google [Bot] og 1 gjest