Apple-Mac Geplaatst: 31 maart 2009 Rapport Geplaatst: 31 maart 2009 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 Reageren
K.O. Geplaatst: 1 april 2009 Rapport Geplaatst: 1 april 2009 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. Reageren
Apple-Mac Geplaatst: 3 april 2009 Auteur Rapport Geplaatst: 3 april 2009 (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: 3 april 2009 door Apple-Mac Reageren
K.O. Geplaatst: 3 april 2009 Rapport Geplaatst: 3 april 2009 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). Reageren
Apple-Mac Geplaatst: 3 april 2009 Auteur Rapport Geplaatst: 3 april 2009 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 Reageren
Dutchy3010 Geplaatst: 3 april 2009 Rapport Geplaatst: 3 april 2009 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. Reageren
Recommended Posts
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.