Как заставить персонажа двигаться вниз?
Я хочу реализовать движение объекта вниз на кнопку S, но получаю ошибку:
using UnityEngine;
public class MOVINGPLAYERFINALLY : MonoBehaviour {
public int speed = 5;
public GameObject player;
void Start()
{
player = (GameObject)this.gameObject;
}
void Update()
{
if (Input.GetKey(KeyCode.W))
{
player.transform.position += player.transform.up * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.S))
{
player.transform.position -= player.transform.down * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.D))
{
player.transform.position += player.transform.right * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.A))
{
player.transform.position -= player.transform.right * speed * Time.deltaTime;
}
}
}
Компилятор жалуется на строку player.transform.position -= player.transform.down * speed * Time.deltaTime;, а именно на момент down *
Как решить проблему?
Ответы (2 шт):
Автор решения: Максим Фисман
→ Ссылка
Существует только transform.up И transform.right
Переменных transform.down и transform.left НЕ существует, однако, так как верх противоположен низу, и лево — праву, вы можете использовать
-transform.up
-transform.right
Соответственно пишем:
if (Input.GetKey(KeyCode.S))
{
player.transform.position -= player.transform.up * speed * Time.deltaTime;
}
НЕ добавляем минус перед transform.up, так как он уже стоит в -=
Автор решения: Yaroslav
→ Ссылка
Vector3 Vector = Vector3.zero;
if (Input.GetKey(KeyCode.W))
Vector += Vector3.up;
if (Input.GetKey(KeyCode.S))
Vector += Vector3.down;
if (Input.GetKey(KeyCode.D))
Vector += Vector3.right;
if (Input.GetKey(KeyCode.A))
Vector += Vector3.left;
player.transform.position += Vector*speed*Time.deltaTime;
Ещё проще:
Vector3 Vector = new Vector3(Input.GetAxis("Vertical"), Input.GetAxis("Horizontal"), 0);
player.transform.position += Vector*speed*Time.deltaTime;
А вообще ответ содержится в тексте ошибки!