iRepair

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.

Sider: 1 2 3 4 5

Skrevet af Martin Wolsing, 29/05 2009
Relaterede indlæg

Kommentarer
Subscribe to RSS
  • 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

Skriv en kommentar

For at kommentere skal du udfylde navn og mailadresse. Du kan også oprette en profil på siden. Du finder registreringsformen nederst i sidebaren i højre side (klik på "Opret").