@mihail25875

Unity выдает ошибку: error CS1061: 'float' does not contain a definition for 'GetKeyDown' and no accessible extension method 'GetKe Как это исправить?

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

public class PlayerControler : MonoBehaviour
{
    public float speed;
    public float jumpForce;
    private float moveInput;

    private Rigidbody2D rb;

    private bool facingRight = true;

    private bool isGrounded;
    public Transform feetPos;
    public float checkRadius;
    public LayerMask whatIsGround;

    private float GetKeyDown;

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

    private void FixedUpdate()
    {
        moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
        if(facingRight == false && moveInput >0)
        {
            Flip();
        }
        else if(facingRight == true && moveInput < 0)
        {
            Flip();
        }
    }

    private void Update()
    {
        isGrounded = Physics2D.OverlapCircle(feetPos.position, checkRadius, whatIsGround);

        if(isGrounded == true && moveInput.GetKeyDown(KeyCode.Space))
        {
            rb.velocity = Vector2.up * jumpForce;
        }
    }

    void Flip()
    {
        facingRight = !facingRight;
        Vector3 Scaler = transform.localScale;
        Scaler.x *= -1;
        transform.localScale = Scaler;
    }
}
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
У тебя есть поле под названием moveInput. Оно имеет тип float.
float - это число с плавающей точкой.

На этом поле ты пытаешься вызвать метод GetKeyDown - у float такого метода, по очевидным причинам, нет.

Но метод GetKeyDown есть у статического класса Input - вероятно тебе на самом деле надо обращаться к нему.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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