- Home /
 
               Question by 
               enzosonic04 · May 03, 2020 at 01:44 AM · 
                movementmovement scriptplatformeraccelerationfriction  
              
 
              Does anyone know what i am doing wrong?
Hi, i'm trying to code a plataformer movement based on acceleration and friction, based on a forum of the classic Sonic physics and movimentation. But as soon as i do the fricrion code, i can't move the character and when i press the two arrow keys at the same time it starts teleportating to left and right. Please help i don't know what i am doing wrong.
 using System.Collections; using
 System.Collections.Generic; using
 UnityEngine;
 
 public class Movement :
 MonoBehaviour {
 
     Vector TempPos;
     public Rigidbody2D rb;
 
     //variables
 
     public float xsp = 0f;   //the speed in which sonic is moving
 horizontally
     public float ysp = 0f;   //the speed in which sonic is moving
 vertically
     public float gsp = 0f;   //the speed in which sonic is moving on
 the ground
 
     //constants
 
     float air = 0.09375f;
     float jmp = 6.5f;
     float grv = 0.21875f;
     float acc = 0.046875f;
     float dec = 0.05f;
     float frc = 0.046875f;
     float top = 6f;
 
     // Start is called before the first frame update
     void Start()
     {
         rb = GetComponent<Rigidbody2D>();
     }
 
     // Update is called once per frame
     void Update()
     {
         TempPos = transform.position;
 
         TempPos.x = gsp;
 
         transform.position = TempPos;
 
         if (Input.GetKey("left"))
         {
             if (gsp > 0)
             {
                 gsp -= dec;
                 if (gsp <= 0)
                 
                     gsp = 0.5f;
                 
             }
             else if (gsp > -top)
             {
                 gsp -= acc;
                 if (gsp <= -top)
                 
                 gsp = -top;
                 
             }
         }
 
         if (Input.GetKey("right"))
         {
             if (gsp < 0)
             {
                 gsp += dec;
                 if (gsp >= 0)
                 
                     gsp = 0.5f;
                 
             }
             else if (gsp < top)
             {
                 gsp += acc;
                 if (gsp >= top)
                 
                     gsp = top;
                 
             }
 
         }
 
         //thats the part of the friction
 
         if (!Input.GetKey("right") && (!Input.GetKey("left")));
         {
             gsp -= Mathf.Min(Mathf.Abs(gsp), frc) *
 Mathf.Sign(gsp);
         }
 
     } }
if it helps, there is the forum link : http://info.sonicretro.org/SPG:Running
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                