@DR01D0

Unity выдает ошибку: Assets\script\playerController.cs(20,31): error CS1061: 'float' does not contain a definition for 'GetAxis'. Как это исправить?

Код для unity:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playercomponent : MonoBehaviour
{
    public float speed;
    public float JumpForce;
    private float muveInput;

    private Rigidbody2D rb;

    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    private void FixeUpdate()
    {
        muveInput = muveInput.GetAxis("Horizoontal");
        rb.velocity = new Vector2(muveInput * speed, rb.velocity.y);

    }
}

Выдает ошибку:

Assets\script\playerController.cs(20,31): error CS1061: 'float' does not contain a definition for 'GetAxis' and no accessible extension method 'GetAxis' accepting a first argument of type 'float' could be found (are you missing a using directive or an assembly reference?)

Как это решать?
  • Вопрос задан
  • 369 просмотров
Пригласить эксперта
Ответы на вопрос 4
GavriKos
@GavriKos Куратор тега Unity
Совсем новичок просто)

сначала стать не новичком, а потом открывать юнити
Ответ написан
@NIKROTOS
Начинающий программист.
muveInput = muveInput.GetAxis("Horizoontal");
переменная muveInput не знает что ей делать, когда ей говорят сделать GetAxis()
скорее всего заработает, если ей сказать, стать равной значению возвращаемому методом GetAxis(), которая кстати как раз float
Ответ написан
@Voland69
Вот Ваш код:
private float muveInput; // это таки float, цифирь с плавающей точкой
/*
------
*/
muveInput = muveInput.GetAxis("Horizoontal"); // и никакого GetAxis у него нет.


Вангую что у Вас где-то определен Unity-контрол muveInput из которого Вы что-то пытаетесь достать.
Но в чем дело - при определении float поля с тем же именем вы контрол "затенили", и его не видите.
переобзовите во что нибудь вида:
private float muveInputHAxis;
muveInputHAxis = muveInput.GetAxis("Horizoontal");
Ответ написан
Комментировать
@vfirstvf
Забавно, что никто так и не ответил на очевидный вопрос) Хоть и поздно, но отвечу :D
muveInput = muveInput.GetAxis("Horizontal");
По-дефолту в Unity эта ось пишется с одной буквой 'o'. Может, конечно, ты изменил это значение, но вряд ли))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы