Я пытаюсь переписать старую игру, над которой я работал месяц назад, но у меня возникают проблемы с реализацией сценариев движения.
На данный момент у меня есть базовая система движений, в которой я просто добавляю скорость и силу.относящиеся к клавишам со стрелками L, R, U, D.Я делаю это вместо получения базовой горизонтальной и вертикальной оси, потому что у них были проблемы с моим следующим фрагментом кода.
Все в порядке, пока я не добавлю в Мой скрипт, где игрок смотрит на mousePosition
.Я предполагаю, что когда мой игрок поворачивается к моей позиции мыши, его идея о том, что слева, а какая справа, перемешивается.
Вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class movement : MonoBehaviour {
private Camera mainCamera;
public float speed = 5f;
// Use this for initialization
void Start ()
{
mainCamera = FindObjectOfType<Camera>();
}
void LookAtPositionOfMouse()
{
Ray cameraRay = mainCamera.ScreenPointToRay(Input.mousePosition);
Plane groundPlane = new Plane(Vector3.up, Vector3.zero);
float raylength;
if (groundPlane.Raycast(cameraRay, out raylength))
{
Vector3 pointToLook = cameraRay.GetPoint(raylength);
Debug.DrawLine(cameraRay.origin, pointToLook, Color.blue);
transform.LookAt(new Vector3(pointToLook.x, transform.position.y, pointToLook.z));
}
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += Vector3.right * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position += Vector3.left * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.UpArrow))
{
transform.position += Vector3.forward * speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.DownArrow))
{
transform.position += Vector3.back * speed * Time.deltaTime;
}
LookAtPositionOfMouse();
}
}
Я знаю, что этоочень примитивный способ сделать это, но я хотел бы пока все упростить, пока я пытаюсь это выяснить.
Спасибо.