Ошибка сценария Unity CS1061 «Vector2» не содержит определения для «GetAxis» - PullRequest
0 голосов
/ 03 июля 2019

Полное сообщение об ошибке, которое я получаю в Unity и работаю на Mac.

Assets / Scripts / Controller.cs (19,45): ошибка CS1061: «Vector2» не содержит определения для «GetAxis», и доступный метод расширения «GetAxis», принимающий первый аргумент типа «Vector2», не может быть найдено (вам не хватает директивы using или ссылки на сборку?)

Вот код, который я использую:

using UnityEngine;
using System.Collections;

public class Controller : MonoBehaviour {

public float speed;
private Vector2 moveVelocity;
private Rigidbody2D rigidBody;

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

// Update is called once per frame
void Update() {
    Vector2 moveInput = new Vector2(moveInput.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
    moveVelocity = moveInput.normalized * speed;
}

void fixedUpdate () {
    rigidBody.MovePosition(rigidBody.position + moveVelocity * Time.fixedDeltaTime);
}
}

Пожалуйста, дайте мне знать, если требуется какая-либо дополнительная информация.

1 Ответ

0 голосов
/ 03 июля 2019

Я думаю, вы запутались Input и moveInput. Кроме того, если у вас есть RigidBody или RigidBody2d, вы должны попытаться не изменять положение GameObjects напрямую, а использовать метод AddForce. Я бы удалил фиксированный метод обновления и вместо этого изменил бы ваш метод обновления следующим образом:

void Update() {
    Vector2 moveInput = new Vector2(Input.GetAxis("Horizontal"),Input.GetAxis("Vertical"));
    rigidBody.AddForce(moveInput.normalized * speed);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...