iPhone-udvikling: Spil-elementer #5 – rotation
Åben filen spil5ViewController.m, find metoden viewDidLoad og erstat den med denne kode:
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
grader = 90;
okse.transform = CGAffineTransformMakeRotation(grader/ 57.2958);
}
Med grader sætter vi hvor mange grader i urets retning vi vil rotere objektet i forhold til hvordan den vender til at starte med. Dernæst udfører næste linie selve rotationen. Her regnes dog i radianer og ikke grader. For at omregne grader til radianer skal man dividere med 57.2958 (180/pi). Så enkelt er det faktisk at rotere et billede. Hvis du kører programmet nu, vil du se at øksen er roteret 90 grader med uret.
Som skrevet er rotationen i forhold til start, så roterer du 45 grader og 45 grader igen, er den stadig kun roteret 45 grader. Vil man gerne illudere en bevægelse, skal man rotere for eksempel 1 grad ad gangen. Det først sætte grader til 1, dernæst 2, 3, 4 osv. indtil bevægelsen er færdig.
Her er et eksempel på hvordan der ser ud: Find metoden viewDidLoad og erstat den med denne kode:
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[NSTimer scheduledTimerWithTimeInterval:0.01
target:self selector:@selector(gameLoop) userInfo:nil repeats:YES];
}
Tilføj derefter en ny metode:
-(void) gameLoop {
grader = grader + 1;
if (grader == 360) {
grader = 0;
}
okse.transform = CGAffineTransformMakeRotation(grader/ 57.2958);
}
Denne kode roterer øksen hele vejen rundt, en grad af gangen, så det ligner en bevægelse.
Afrunding
Alt dette er meget enkelt, i princippet bare en enkelt kodelinie. Det avancerede kommer i hvordan man bruger det. Man kan for eksempel styre rotationen ved hjælp af knapper. Man kan lade et objekt rotere, så det altid peger op, altid peger mod et andet objekt etc. Mulighederne er mange – det hele handler om matematik. Her er det specielt en god ide lige at få læst op på vektorregning og cirkelgeometri igen. Har man aldrig hørt om vektorregning er dette en glimrende anledning til at stifte bekendskab med emnet (og erfarer at abstrakt matematik kan bruges til noget i virkeligheden). Måske jeg skal skrive en hel artikel dedikeret “spilmatematik” på et tidspunkt.
Post gerne jeres erfaringer med måder at bruge rotation på herunder. Næste gang skal vi kigge på kollision; det lover jeg.
Virksomhed skifter til iPhonen pga. bedre sikkerhed
Nu kan du redde et still-billede ud af videooptagelsen
Ugens mock-up: iPhone inspireret af Apples Magic Mouse
Der er udfordringer i en flad men udviddet version af Rubik’s Cube
Steve Jobs var tæt involveret i designet af en iPhone med større skærm
Spring ud i det mørke rum, men sørg for at lande det rigtige sted
Æd en masse insekter, men vogt dig for de farlige
Apple: Den nye iPad har skiftet navn
Giv dit musikbibliotek på iPaden et personligt præg
Post-apokalyptisk spil spår om affald, som omdannes til destruktive monstre.
15,4″ retina-skærm allerede i produktion
Alle detaljer om ny MacBook afsløret
Apple-bestyrelsesmedlem: Apple rykker snart ind i folks dagligstuer
Mediedirektør: Apple TV gør intet for at hjælpe med at få internetmateriale på ens TV
Rygte: Apple vil købe TV-producenten Loewe
Bestyrelsesmedlem hos Foxconn: Vi gør os klar til produktion af Apple-fjernsyn
Opdatering til Apple TV giver preview i HD
Michael A.
Jeg kan ikke rigtigt få det til at virke. Når jeg trykker “Build and Go”, starter den iPhone Simulator, og en tom skærm. Derefter en fejl.
Kan nogen hjælpe?
28. juli 2009 @ 18:52