| In ein normales Fenster verwandeln  | close  
> gametheory.ch - swiss gamedesign (elearning & knowhow at gamedesign.zhdk.ch [zürcher hochschule der künste])> GAMEDESIGN: Programmierung & GameEngines> Game-Development (3D-Gameengines)> Unity3D> Topics/Themen> Code Snippets

Code Snippets

Beispiele für Rotationen & Physik
 
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen

Text/Objekt verändern
Rotationen: Euler vs. Quaternion

var geo_laenge : float = 0.0;
var geo_breite : float = 0.0;

function Update()
{
var dt : float = Time.deltaTime;
FliegUmDieErde_Quaternion(dt);
//FliegUmDieErde_Euler(dt);
}

function FliegUmDieErde_Quaternion (dt : float)
{
var dx : float = Input.GetAxis("Horizontal") * 100.0 * dt;
var dy : float = Input.GetAxis("Vertical") * 100.0 * dt;
var dz : float = 0;

if (Input.GetKey(KeyCode.Y))
dz = -1;

if (Input.GetKey(KeyCode.X))
dz = 1;

transform.parent.Rotate(transform.right, dy, Space.World);
transform.parent.Rotate(transform.up, -dx, Space.World);
transform.parent.Rotate(transform.forward, -dz, Space.World);
}



function FliegUmDieErde_Euler (dt : float)
{
var dx : float = Input.GetAxis("Horizontal") * 180.0;
var dy : float = Input.GetAxis("Vertical") * 180.0;

geo_laenge += dx * dt;
geo_breite += dy * dt;

transform.parent.rotation.eulerAngles = Vector3(geo_breite, -geo_laenge, 0.0);
}
(Hardmeier Dario B) 22-4-2009 / 23:12
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
text
Text/Objekt verändern
Physik: Schrittverfahren

var px : Vector3 = Vector3.zero; // Ort
var pv : Vector3 = Vector3.zero; // Geschwindigkeit
var pa : Vector3 = Vector3.zero; // Kraft

var sonne : Transform;
var sonne2 : Transform;


function Start ()
{
pv = new Vector3(2.5, 0.0, 2.5);
}


function Update ()
{
var dt : float = Time.deltaTime;


var alpha = 20.0;
var alpha2 = 10.0;

// Kraft auf 0
pa = Vector3.zero;

// erster Planet
if ((sonne.position - px).magnitude > 0.0001)
pa += alpha * (sonne.position - px) / Mathf.Pow((sonne.position - px).magnitude, 3);

// zweiter Planet
if ((sonne2.position - px).magnitude > 0.0001)
pa += alpha2 * (sonne2.position - px) / Mathf.Pow((sonne2.position - px).magnitude, 3);

// Konstante Kraft
pa += Vector3(-2.0, 0.0, -1.0);


// Steuerung
pa += new Vector3(Input.GetAxis("Horizontal") * 8.0, 0, Input.GetAxis("Vertical") * 8.0);

pv = pv + pa * dt;

// Reibung
var reibung : float = 0.0;
pv = pv * (1 - reibung);
px = px + pv * dt;

transform.position = px;
}
(Hardmeier Dario B) 22-4-2009 / 23:12
Text/Objekt verändernEinen Kommentar (einer Stelle[markiert]) hinzufügen
text