Jump to content
Unity Insider Forum

script - perfomance fehler?


dosenbiiir

Recommended Posts

Hey Leute

Ich wollte mal fragen ob euch irgendwas an dem script Aufällt was man so nicht machen sollte. Der Hintergrund ist, dass mein Spieler (ein Ball, der sich nach vorne bewegt) manchmal leicht hackt am handy. (Samsung Galaxy S4).

 

using UnityEngine;
using System.Collections;
public class Controller: MonoBehaviour {

public float forwardSpeed = 1;
public float rotationSpeed = 1;
public Vector2 touchPosition;
public float xPixel;
public float yPixel;
Vector3 moveDirection = Vector3.zero;
CharacterController controller;


void Awake () {
 controller = GetComponent<CharacterController>();
 xPixel = Screen.width;
 yPixel = Screen.height;
}

void Update () {
 if (Input.touchCount == 1) {
  touchPosition = Input.GetTouch (0).position;

  if (touchPosition.x <= xPixel / 2) {
transform.Rotate(0,0,rotationSpeed);
  }
  else if (touchPosition.x > xPixel / 2) {
transform.Rotate(0,0,-rotationSpeed);
  }
 }

 moveDirection = new Vector3(forwardSpeed,0,0);
 moveDirection = transform.TransformDirection(moveDirection);
 //rotation += 90;
 //transform.rotation = Quaternion.Euler(0, rotation, 0);

 transform.position += moveDirection * Time.deltaTime;
}
}

 

Sonst habe ich nur noch das Camera Script in der Scene.

using UnityEngine;
using System.Collections;
public class CameraFollow : MonoBehaviour {
public GameObject player;
Vector3 pos = Vector3.zero;

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

 pos = player.transform.position;
 pos.z -= 10;
 transform.position = pos;
}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kannst du bei genauem Hinschauen erkennen, ob es wirklich der Spieler ist der lagt oder das ganze Spiel?

Performancemäßig sehe ich zumindest in deinem Script nichts Angst einflößendes.

 

Einzig dieser Teil könnte problematisch sein (aber logisch, nicht wegen der Performance):

  if (touchPosition.x <= xPixel / 2) {
    transform.Rotate(0,0,rotationSpeed);
  }
  else if (touchPosition.x > xPixel / 2) {
    transform.Rotate(0,0,-rotationSpeed);
  }

Wenn die Toucherkennung nicht ganz genau ist, könnte es da in einigen Frames rotieren und in anderen nicht, was wie ruckeln wirken könnte.

 

Wenn allerdings das ganze Spiel ruckelt dann liegt's wahrscheinlich an irgendetwas im Rendering.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...