В настоящее время я использую код, который позволяет вращать трехмерный объект, который я помещаю в сцену, но хочу использовать клавиатуру для вращения объекта вместо колеса прокрутки, так как это мешает сценарию, который я использую для увеличения и вне.
Я уже установил вращение колеса прокрутки на 0, чтобы он больше не вращал объект, а пытается найти способ реализовать код, позволяющий использовать вместо этого клавиатуру.
Поскольку я все еще новичок в C #, я очень борюсь с тем, как это сделать, и мне трудно найти бесплатные ресурсы для изучения языка.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GroundPlacementTest : MonoBehaviour {
[SerializeField]
private GameObject placeableObjectPrefab;
[SerializeField]
private KeyCode newObjectHotkey = KeyCode.A;
private GameObject currentPlaceableObject;
private float mouseWheelRotation;
private void Update()
{
HandleNewObjectHotkey();
if (currentPlaceableObject != null)
{
MoveCurrentObjectToMouse();
RotateFromMouseWheel();
ReleaseIfClicked();
}
}
private void HandleNewObjectHotkey()
{
if (Input.GetKeyDown(newObjectHotkey))
{
if (currentPlaceableObject != null)
{
Destroy(currentPlaceableObject);
}
else
{
currentPlaceableObject = Instantiate(placeableObjectPrefab);
currentPlaceableObject.layer = LayerMask.NameToLayer("Ignore Raycast");
}
}
}
private void MoveCurrentObjectToMouse()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo))
{
currentPlaceableObject.transform.position = hitInfo.point;
currentPlaceableObject.transform.rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal);
}
}
private void RotateFromMouseWheel()
{
Debug.Log(Input.mouseScrollDelta);
mouseWheelRotation += Input.mouseScrollDelta.y;
currentPlaceableObject.transform.Rotate(Vector3.up, mouseWheelRotation * 0f);
}
private void RotateFromMouseWheel()
{
Debug.Log(Input.mouseScrollDelta);
mouseWheelRotation += Input.mouseScrollDelta.y;
currentPlaceableObject.transform.Rotate(Vector3.up, mouseWheelRotation * 0f);
}
private void ReleaseIfClicked()
{
if (Input.GetMouseButtonDown(0))
{
currentPlaceableObject.layer = LayerMask.NameToLayer("Default");
currentPlaceableObject = null;
}
}
Я хочу использовать клавиатуру для вращения объекта вместо колеса прокрутки, вращающего его.