Machen Spieler bewegen sich vorwärts,rechts,Links und rückwärts basiert auf einer Kamera-Winkel

Bisher habe ich einen Spieler, der nach vorne bewegt, Links, rechts und nach hinten, jedoch wie ich es eingerichtet haben es uns als vorwärts auf das Gitter, nicht nach vorne, wo mein Spieler ist auf der Suche. Ich habe die Kamera als FPS, mit der es nach dem Spieler um. Jetzt möchte ich die Spieler in der Lage sein zu schauen, mit meinen MouseLook-Skript (funktioniert bereits), basiert aber auf, ich will vorne sein, wohin der Spieler schaut, nicht die primitiv-version, die ich habe. Ich poste code unten und lassen Sie Sie wissen, was ich Rede, JEDE Hilfe ist willkommen.

Player Script (Bewegung)

    void Update () {

    if(Input.GetKey (moveU))
    {
        SetTransformZ((transform.position.z) + playerSpeed);

    }

    if(Input.GetKey (moveD))
    {
        SetTransformZ((transform.position.z) - playerSpeed);

    }

    if(Input.GetKey (moveL))
    {
        SetTransformX((transform.position.x) - playerSpeed);
    }

    if(Input.GetKey (moveR))
    {
        SetTransformX((transform.position.x) + playerSpeed);
    }

    else
    {
        rigidbody.angularVelocity = Vector3.zero;

    }


}

void SetTransformX(float n)
{
    transform.position = new Vector3(n, transform.position.y, transform.position.z);
}

void SetTransformZ(float n)
{
    transform.position = new Vector3(transform.position.x, transform.position.y, n);
}

MouseLook-Skript (an Haupt-Kamera in der Einheit, das funktioniert mit dem er Spieler geht es auch so, egal wo meine Maus ist auf der Suche, aber die Bewegung ist ausgeschaltet, da mein code zu bewegen, ist sehr primitiv)

[AddComponentMenu("Camera-Control/Mouse Look")]

public class MouseLook : MonoBehaviour {

public enum RotationAxes { 
    MouseXAndY = 0, 
    MouseX = 1, 
    MouseY = 2 }

public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationY = 0F;

void Update ()      
{
    if (axes == RotationAxes.MouseXAndY)
    {
        float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
        rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
        transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
    }

    else if (axes == RotationAxes.MouseX)
    {
        transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
    }

    else
    {
        rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
        transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
    }
}



void Start ()
{
    //if(!networkView.isMine)
    //enabled = false;

    //Make the rigid body not change rotation
    //if (rigidbody)
    //rigidbody.freezeRotation = true;

}
Es ist also die erste person, haben Sie drehen Sie Ihre Spieler, als sich die Kamera dreht?
Wow ja, es sollte auf meine Spieler, die gewechselt sind, aber immer noch nicht lösen mein Thema, aber die großen Fehler auf meinem Teil.

InformationsquelleAutor | 2014-02-21

Schreibe einen Kommentar