Donc je fais un platformer 2d dans Unity, (Encore nouveau pour C# et Unity aussi), et j'essaye de faire un script de mouvement pour un simple carré, et le carré sera aléatoirement arrête de bouger, et je vais devoir sauter pour recommencer à bouger, seulement pour que cela se reproduise.Unity 2d Numéro de script Movement
public class PlayerMovement : MonoBehaviour
{
public float moveSpeed;
public float jumpHeight;
void Start()
{
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, jumpHeight);
}
if (Input.GetKey(KeyCode.D))
{
GetComponent<Rigidbody2D>().velocity = new Vector2(moveSpeed, 0);
}
if (Input.GetKey(KeyCode.A))
{
GetComponent<Rigidbody2D>().velocity = new Vector2(-moveSpeed, 0);
}
}
}
Ceci est probablement dû au collisionneur sur l'objet. L'objet est-il placé sur un 'terrain'? Votre script fonctionne-t-il s'il n'y a pas de terrain (et la gravité est désactivée)? – Bejasc
Votre code est incomplet 'GetComponent() .velocity = nouveau Vector2 (GetComponent () .velocity.x,' ce qui m'amène à croire que ce n'est pas le code exact utilisé.Veuillez fournir le code exact. Comme @Bejasc l'a noté, c'est probablement une bosse dans le sol, assurez-vous que le terrain est ou essayez-le avec un collisionneur en forme de sphère –
Maakep