2017-02-21 2 views
0

Wenn ich das 'w' drücke und die Kamera verschiebe, bewegt sich der Player nicht in die Kamerarichtung, zB wenn ich vorwärts gehe und die Kamera nach links verschiebe würde sie nicht gehen auf der linken Seite, aber mach weiter, was sind einige Möglichkeiten, dies zu beheben. Spieler Bewegung ScriptDer Player bewegt sich nicht dort, wo die Kamera steht

public float movementspeed = 5.0F; 

// Use this for initialization 
void Start() { 
    Cursor.lockState = CursorLockMode.Locked; 
} 

// Update is called once per frame 
void Update() { 

    float translation = Input.GetAxis("Vertical") * movementspeed; 
    float straffe = Input.GetAxis("Horizontal") * movementspeed; 
    translation *= Time.deltaTime; 
    straffe *= Time.deltaTime; 

    transform.Translate(straffe, 0, translation); 
} 

}

und Kamera-Ansicht Script

public float xMoveThreshold = 1000.0f; 
public float yMoveThreshold = 1000.0f; 

public float yMaxLimit = 50.0f; 
public float yMinLimit = -50.0f; 


float yRotCounter = 0.0f; 
float xRotCounter = 0.0f; 

Transform player; 

void Start() 
{ 
    player = Camera.main.transform; 
} 

// Update is called once per frame 
void Update() 
{ 
    xRotCounter += Input.GetAxis("Mouse X") * xMoveThreshold * Time.deltaTime; 
    yRotCounter += Input.GetAxis("Mouse Y") * yMoveThreshold * Time.deltaTime; 
    yRotCounter = Mathf.Clamp(yRotCounter, yMinLimit, yMaxLimit); 
    //xRotCounter = xRotCounter % 360;//Optional 
    player.localEulerAngles = new Vector3(-yRotCounter, xRotCounter, 0); 
} 

}

Picture 1

Picture 2

+0

Ich befestigte das erste Skript an die Kamera, und das zweite Skript leer Spielobjekt. Ich konnte die Kamera bewegen und drehen. Die Bewegung ist in Ordnung. Es bewegt sich immer in die Richtung, in die die Kamera zeigt. Was ist das Problem, das du hast? – Programmer

+0

Sprich, ich schaue nach links und drücke 'w', es wird nicht nach links gehen. Die Bewegungsrichtung wird sich mit der Kamera nicht ändern, und egal, wie ich es sehe, es wird auf eine bestimmte Art und Weise gehen, wie wenn ich nach vorne schaue und 'w' drücke und die Kamera nicht berühre, wird es gehen Gerade, aber wenn ich die Kamera zurück schaue und 'w' drücke, würde es rückwärts gehen. – Johnny

+1

Mit dem Bild, das du in deiner Frage aktualisiert hast, ** setze keine Kamera unter das GameObject. Mach es andersherum. Machen Sie diesen Player zu einem Kind der Kamera und hängen Sie beide Skripte an die Kamera an, die nun das übergeordnete Objekt des Players ist. – Programmer

Antwort

0

Sie müssen de camera transform verwenden, um dies zu tun. Etwas wie:

public float movementspeed = 5.0F; 
public Transform cameraTransform; 

// Use this for initialization 
void Start() { 
    Cursor.lockState = CursorLockMode.Locked; 
} 

// Update is called once per frame 
void Update() { 

    float translation = Input.GetAxis("Vertical") * movementspeed; 
    float straffe = Input.GetAxis("Horizontal") * movementspeed; 
    translation *= Time.deltaTime; 
    straffe *= Time.deltaTime; 

    Vector3 movement = cameraTransform.Forward * translation + cameraTransform.Right * straffe; 
    transform.position = transform.position+ movement; 
} 
Verwandte Themen