Bevægende Platforme

3D GameKit # 2

Vores karakter følger ikke platformen hvis de bevæger sig imens hun står på dem. Med noget C# kode kan vi ændre på dette.

Animer en platform

For at få en platform, f.eks. en sten, til at bevæge sig, kan man animere den med keyframes i en animation.

Først skal du finde et komponent på din sten, den hedder “Animator”, det er vigtigt du får fat i præcist denne da den nemt kan forveksles med en lignende komponent.

Derefter skal du åbne animationsvinduet ved at trykke CTRL+6 hvor du kan se knappen “Create”.

Tryk nu på “Create” hvor du kan navngive din animation og trykke gem.

I animations vinduet kan du lave keyframes som er et slags billede af hvordan din platform så ud, eller hvor den var placeret på et givent tidspunkt.

Hvis du trykker på optagingsknappen som er en rød cirkel i venstre øverste hjørne af animationsvinduet, så optager vi de ændringer vi vil have der skal ske. Tryk på knappen.

Nu kan du flytte platformen derhen hvor du synes den skal starte. Da du nu flyttede platformen, bemærkede animationsoptageren det og har lavet et keyframe som siger hvor din platform er på starten af animationen.

Zoom nu så langt ud i vinduet at du kan se at der står 10:00, sæt derefter din markør i tidslinjen derhen. Kopier ved at markede din første keyframe og trykke CTRL+C og derefter CTRL+V. Du skulle nu gerne have indsat et nyt keyframe ved 10:00, som er slut keyframes i din animation.

Gå nu til 5:00 i tidslinjen og flyt din platform.

Animationsvinduet

Når det er gjort, kan du trykke på Play knappen i animations vinduet for at se hvordan animation ser ud uden at starte spillet. Det første keyframe bestemmer hvor din platform er i starten af animation, det næste siger hvor den skal være i midten, og den sidste siger hvor den skal slutte. Slutkeyframet har vi sat som det samme som startkeyframes så vores animation gentager sig flydende. Animationen kan selv finde ud af hvordan platformen skal se ud i tiden imellem de forskellige keyframes.

En sidste ting er at trykke på static på din platform så den er slået fra, og sig ja til at ændre dens “børn” også. Den findes i højre øverste hjørne af din inspector. Dette gør at både dens synlige krop og dens fysiske krop bevæger sig med animationen.

Inspectoren

Du har nu lavet en bevægende platform!

Følg en ny platform

Vores karakter følger ikke platformen hvis de bevæger sig imens hun står på dem. Med noget C# kode kan vi ændre på dette.

Først skal vi lave en capsule collider på vores karakter der er ca lige så stor som karakteren. Desuden skal vi også have sat en rigidbody på karakteren, og derefter slå “Gravity” i rigidbody fra.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerStick : MonoBehaviour {
 	void OnCollisionEnter (Collision collision) { 
		if (collision.gameObject.tag == ("Player")) { 
			collision.transform.parent = gameObject.transform;
		} 
 	}
}

Stop med at følge en platform

For at få Ellen til at stoppe med at følge en platform når hun hopper væk, så skal vi lave et ekstra C# script Sørg for at dette står i scriptet og at filen hedder “PlayerUnstick.cs”, derefter sæt scriptet på Ellen.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerUnstick : MonoBehaviour {
	void Update () {
		if (Input.GetKeyDown(KeyCode.Space)) {  
			gameObject.transform.parent = null; 
		}
	}
}