skunkycabbage Ответов: 3

Метод, который не является допустимым в данном контексте. Нужна помощь


Unity говорит: "PlayerMovement.TakeInput ()" - это метод, который не является допустимым в данном контексте.
Это мой код.

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

public class PlayerMovement : MonoBehaviour
{
    public float speed;
    private Vector2 direction;

    void Update()
    {
        TakeInput();
        Move();
    }

    private void Move()
    {
        transform.Translate(direction * speed * Time.deltaTime);
    }

    private void TakeInput()
    {
        direction = Vector2.zero;
        if (TakeInput.GetKey(KeyCode.W))
        {
            direction += Vector2.up;

        }
        if (TakeInput.GetKey(KeyCode.A))
        {
            direction += Vector2.left;

        }
        if (TakeInput.GetKey(KeyCode.S))
        {
            direction += Vector2.down;

        }
        if (TakeInput.GetKey(KeyCode.D))
        {
            direction += Vector2.right;

        }
    }
}


Что я уже пробовал:

Я пытался найти способы решить эту проблему.

3 Ответов

Рейтинг:
22

Richard MacCutchan

if (TakeInput.GetKey(KeyCode.W))

Вы не можете использовать TakeInput в качестве ссылки на объект, так как ранее объявили его как метод этого класса. Я полагаю, что ваш код должен быть справедливым:
if (GetKey(KeyCode.W))


[no name]

thnx, этот вариант хорошо работает для меня

Рейтинг:
1

David O'Neil

Является TakeInput перекрывая некоторые MonoBehavior::TakeInput рутина? Если да, то, может быть, что-то вроде: if (MonoBehavior::TakeInput(GetKey(KeyCode.W)) ... или что-то в этом роде-это то , что вам нужно.


Рейтинг:
0

KarstenK

Функция является функцией-членом, но вы используете ее как статическую функцию. Используйте его как член объекта.