- 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