Jump to content
Unity Insider Forum

First-Person-Bewegungsproblem


YGOFreak1997

Recommended Posts

Hallo, Leute, ich habe ein kleines Problemchen mit meinem First Person Controller. Naja, hier ist erstmal sein bisheriger Code ^^

 

var Speed : float = 10.0;
var BoostedSpeed : float = 10.0;
var JumpSpeed : float = 10.0;
var Gravity : float = 20.0;
private var controller : CharacterController;
private var dir : Vector3 = Vector3.zero;
controller = GetComponent(CharacterController);
function Update () {
if(controller.isGrounded)
{

 dir.x = Input.GetAxis("Horizontal") * Speed;
 dir.z = Input.GetAxis("Vertical") * Speed;
 dir.y -= 1;

}
else
{

 dir.y -= Gravity * Time.deltaTime;

}

controller.Move(dir * Time.deltaTime);
}

 

Dazu habe ich dann noch den Mouselook-Skript aus den Standart Assests zum Drehen des Characters. Das Problem ist jetzt, dass, wenn ich mich drehe (Mit dem Skript) und mich dann bewege, der Character sich quasi immer noch nach dem Weltraster bewegt, anstatt den Ort, auf den Ich schaue, als "Vorne" zu sehen. Also zum Beispiel, wenn ich mich 90 Grad nach rechts drehe und dann auf w drücke, läuft er nach links xD

 

Hat jemand eine Idee, wie ich das behebe?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schlagt mich wenn es die falsche Begründung ist ;D

Du benutz gerade world coordinates. Diese haben nichts mitr der Rotation zu tun, ein objekt wird sich bei y++; immer auf der y-Achse bewegen.

 

 

 

var Speed : float = 10.0;

var BoostedSpeed : float = 10.0;

var JumpSpeed : float = 10.0;

var Gravity : float = 20.0;

private var controller : CharacterController;

private var dir : Vector3 = Vector3.zero;

controller = GetComponent(CharacterController);

function Update () {

if(controller.isGrounded)

{



 dir.x = Input.GetAxis("Horizontal") * Speed;

 dir.z = Input.GetAxis("Vertical") * Speed;

 dir.y -= 1;



}

else

{



 dir.y -= Gravity * Time.deltaTime;



}



controller.Move(transform.TransformDirection(dir) * Time.deltaTime);

}

Das sollte funktionieren.

 

Edith fragt, warum du das

dir.y -= 1;

 

brauchst oO

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...