why does my 2d platformer lags?
Hello Community, got this 2d plataformer, and the character is a vehicule, so Im using addforce to move it. i could swear it was working fine. but I dont know what happened now it lags when I press the horizontal axis keys. starts fine, after some seconds starts to lag untill it freezes, if I release the movement keys the game returns to be fine, but as soon as I press the either key (left or right) again it lags. If I just move by pressing the boost button the game is totaly fine. If I press the boost button when using the movement keys, the character just flys of the screen super fast like it had stored force in it. help please, I have modified the script several ways and couldnt fix it. this is the C# code:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerStouss : MonoBehaviour {
 public float speed = 6f , maxVelocity = 8f;
 private Rigidbody2D myBody;
 private Animator anim;
 private float volLowRange = 0.5f;
 private float volHighRange = 1.0f;
 void Awake () {
     myBody = GetComponent<Rigidbody2D> ();
     anim = GetComponent<Animator> ();
 }
 // Use this for initialization
 void Start () {
 }
 
 // Update is called once per frame
 void Update () {
     
 }
 void FixedUpdate(){
     // this gets the imput of the player to jump
     PlayerMoveKeyboard ();{
     if (Input.GetButtonDown ("Jump"))
         Nitrous ();
         }
 }
     // this gets the imput for movement
 void PlayerMoveKeyboard(){
     float forceX = 0f;
     float vel = Mathf.Abs (myBody.velocity.x);
     float h = Input.GetAxisRaw ("Horizontal");
 
     if (h > 0) {
         if (vel < maxVelocity)
             forceX = speed;
         Vector3 temp = transform.localScale;
         temp.x = 1f;
             transform.localScale =temp;
                     
         anim.SetBool ("StoussMoving", true);
         SoundManagerScript.PlaySound("StoussMoving");
                 }
     else if (h < 0) {
         if (vel < maxVelocity)
             forceX = -speed;
         Vector3 temp = transform.localScale;
         temp.x = -1f;
             transform.localScale = temp;
         
         anim.SetBool ("StoussMoving", true);
         SoundManagerScript.PlaySound("StoussMoving");
     } 
     else
         anim.SetBool ("StoussMoving", false);
         myBody.AddForce (new Vector2 (forceX, 0));
     }
 void Nitrous () {
     
     SoundManagerScript.PlaySound("StoussBoost");
     if (transform.localScale.x > 0)
         myBody.AddForce (transform.right * 8, ForceMode2D.Impulse);
     
         //myBody.AddForce (transform.up * 1 , ForceMode2D.Impulse);
     
      if (transform.localScale.x < 0)
         myBody.AddForce (transform.right * -8, ForceMode2D.Impulse);
                 //myBody.AddForce (transform.up * 1 , ForceMode2D.Impulse);
 }
     
 
               } thanks.
Answer by ismaelnascimento01 · May 28, 2017 at 01:47 PM
Check link: https://docs.unity3d.com/Manual/Profiler.html verify if is otimization this your game.
Your answer