Исправление ошибки в скрипте Unity2D
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public KeyCode leftKey;
public KeyCode rightKey;
public KeyCode squatKey;
public KeyCode jumpKey;
public Animator animator;
void Start()
{
rb = GetComponent<Rigidbody2D>();
animator.SetFloat("Speed", 0);
}
void Update()
{
float moveAxis = Input.GetAxis(moveInputAxis);
if (moveAxis != 0)
{
animator.SetFloat("Speed", Mathf.Abs(moveAxis));
Vector2 newVelocity = rb.velocity;
newVelocity.x = moveAxis * speed;
rb.velocity = newVelocity;
if (moveAxis < 0)
{
transform.localScale = new Vector3(-1, 1, 1); //flip character if going left
} else if (moveAxis > 0) //if going right
{
transform.localScale = new Vector3(1, 1, 1); //set the local scale to be facing right //set the local scale to be facing right
}
} else { //if no input is detected then set speed to zero and play idle animation
animator.SetFloat("Speed", 0);
}
if (Input.GetKeyDown(jumpKey))
{
animator.SetTrigger("Jump");
rb2d.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
}
}
}
как их исправить?
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Ну, наверное, добавить описание этой переменной туда же, где и остальные переменные класса вы объявляете - перед методами:
public class PlayerMovement : MonoBehaviour
{
...
public Rigidbody2D rb;
void Start()
{
rb = GetComponent<Rigidbody2D>();
...
Автор решения: Nick Shakhrai
→ Ссылка
- Ты забыл объявить 3 переменных: переменную
rb, которая отвечает за использованиеRigidbody2D, переменнуюspeed, отвечающую за скорость твоего героя и переменнуюjumpForceотвечающую за силу прыжка. Также не пойму зачем тебе переменнаяrb2d, если у тебя уже естьrb, выполняющая ту же самую роль. - В строке где ты объявил moveAxis написано что он равен
moveInputAxis, такая строка вUnityне предусмотрена, вместо этого лучше написатьHorizontal, также возьми во внимание чтоInput.GetAxisпринимает строку, а не не существующую переменную.
Добавь эти строки в место где объявляешь переменные:
public float speed;
public float jumpForce;
private Rigidbody2D rb;
Значение Input.GetAxis измени на:
float moveAxis = Input.GetAxis("Horizontal");
В этой строке замени rb2d на rb;
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
