Jump to content

Recommended Posts

Geplaatst:

Beste mensen,

Ik heb een vraag aan degene die me het eerst kan en wil helpen.

Hoe zorg ik ervoor dat een object kan draaien ingame? (Bijv. een windmolen) Welke code moet ik ervoor gebruiken.

Apple-Mac

Geplaatst:

Gokje:

034D: rotate_object $2709 from_angle 0.0 to_angle 360.0 flag 0

Ctrl+Alt+2 en zoeken naar 'rotate' komt hierop uit, en het ziet er nog best geloofwaardig uit ook.

Geplaatst: (bewerkt)

Heb het geprobeerd, maar het werkte niet, helaas...

JGhunterS had een keer een object laten draaien voor mij, maar hij werkte zo:

DEFINE OBJECTS 2
DEFINE OBJECT POLPAR1

(Hier staan wat regels tussen)

:JGSDR
thread 'JGSDR'            
3@ = 755.1059 
4@ = 2290.763 
5@ = 2.2 
1@ = Object.Create(#POLPAR1, 3@, 4@, 5@)
2@ = 0.0 
33@ = 0 

:JGSDR_122
wait 1        
2@ += 1.5 
if 
 2@ == 360.0 
else_jump @JGSDR_167 
2@ = 0.0 

:JGSDR_167
if 
 33@ > 120000 
else_jump @JGSDR_200 
wait 20000 
33@ = 0 

:JGSDR_200
Object.Angle(1@) = 2@
jump @JGSDR_122 

:JGSDR_215
wait 0 
00BF: $TIME_HOURS = current_time_hours, $TIME_MINS = current_time_minutes 
jump @JGSDR_215 
end_thread 

Kan iemand mij misschien wat informatie geven over de manier waarop hij gewerkt heeft? Ik snap deze methode niet echt.

Apple-Mac

Bewerkt: door Apple-Mac
Geplaatst:

Volgens mij is dit niet de gehele code, want sommige stukjes lijken nogal onzinnig. Maar goed, ik zal proberen uit te leggen wat er gebeurt:

Eerst worden drie variabelen gedeclareerd (3@, 4@ en 5@) die de X,Y en Z coördinaten voorstellen van een nog te creëren object. Dan wordt het object gemaakt en opgeslagen in 1@. De variabele die daarna komt, 2@, stelt de rotatiehoek voor; deze begint op 0.0. Wat precies het nut is van 33@ begrijp ik niet helemaal, maar ik vermoed dat het een soort timer is die bijhoudt hoe lang het object moet blijven draaien.

Na label JGSDR_122 wordt de variabele die de rotatiehoek opslaat verhoogt met 1,5 en, als deze nog niet gelijk is aan 360.0 (graden), wordt er gesprongen naar JGSDR_167. Als deze 360.0 graden heeft berijkt begint men weer opnieuw met tellen bij 0.0 graden. (Ik neem aan omdat SA crasht als je probeert een rotatiehoek aan een object mee te geven die groter is dan 360.0 graden.) Na JGSDR_167 wordt gekeken of dat 33@ nog niet boven de 120000 (microseconden?) zit en als dit inderdaad niet het geval is, wordt het object de correcte Angle meegegeven.

Door dit stukje telkens te herhalen wordt het object steeds 1.5 graad meer gedraaid, totdat uiteindelijk een volledige ronde is beschreven, wanneer de hoek dus weer op 0.0 wordt ingesteld (in plaats van 360 + 1.5 = 361.5).

Wat ik zelf eerst niet helemaal begreep is dat je je object 'real-time' wilde laten draaien, dus dat je daadwerkelijk een draaiend object in SA ziet. Stom, want je hebt het over een windmolen dus dat zou me eigenlijk daardoor wel duidelijk geworden moeten zijn. De rotate_object functie (die volgens mij min of meer hetzelfde is als de Object.Rotate notatie) geeft een object direct de gegeven hoek mee en doet dit niet 'langzaam' zeg maar. In één frame wordt het object gelijk een heel rondje geroteerd, waardoor je er zelf inderdaad weinig van ziet.

Je zult dus inderdaad een soort van lus moeten maken die het object een heel klein stukje verder draait en dan even wacht (zodat je het daadwerkelijk kunt zien).

Geplaatst:

Thanks ik zal kijken wat ik ermee kan. Ik wist toevallig wel wat het nut van @33 is. Dan stopt het object even met draaien, en gaat daarna verder (hier had ik namelijk om gevraagd).

Weet jij misschien ook hoe je de player aan een object kunt vast maken?

Zal dat mogelijk kunnen zijn?

Apple-Mac

Geplaatst:

33@ is één van de timers van de engine. Die loopt altijd, en kan je op elk willekeurig moment aanroepen (al moet je die natuurlijk wel eerst op 0 zetten, want anders heb je geen idee op welk getal die staat!). Inderdaad in micro-seconden.

PS: ik weet niet of je het al gedaan hebt, maar het is wel zo netjes om aan Jesse te vragen of je die code mag gebruiken.

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...