В сцене скользит объект.

Общие вопросы о Unity3D

В сцене скользит объект.

Сообщение Wutangers 07 сен 2023, 21:43

:ymhug: Доброго времени суток форумчане! Решил значит познавать основы Unity, и приобрел книгу "Unityt в действии" Джозеф Хокинг. (https://studfile.net/preview/16591205/). Столкнулся с проблемой после написания скрипта для одновременного горизонтального и вертикального вращения (https://studfile.net/preview/16591205/page:15/). При выборе вращения только по оси "X" или только по оси"Y", всё нормально. Но если выбрать в скрипте вращение по обоим осям,то объект начинает скользить по поверхности (причем в обратную сторону взора камеры). Помогите :((
Wutangers
UNец
 
Сообщения: 2
Зарегистрирован: 07 сен 2023, 21:25

Re: В сцене скользит объект.

Сообщение 1max1 07 сен 2023, 22:03

Как связано между собой скольжение по поверхности и поворот мышкой 8-}
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: В сцене скользит объект.

Сообщение Wutangers 09 сен 2023, 13:00

Вот сам скрипт из учебника.

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

public class Mouselook : MonoBehaviour
{
public enum RotationAxes {
MouseXandY = 0,
MouseX = 1,
MouseY = 2

}
public RotationAxes axes = RotationAxes.MouseXandY;
public float sensitivityHor = 9.0f;
public float sensitivityVert = 9.0f;

public float minimumVert = -45.0f;
public float maximumVert = 45.0f;

private float verticalRot = 0;
// Start is called before the first frame update
void Start() {
Rigidbody body = GetComponent<Rigidbody>();
if (body != null) {
body.freezeRotation = true;
}
}

// Update is called once per frame
void Update()
{
if (axes == RotationAxes.MouseX) {
transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityHor, 0);
}
else if (axes == RotationAxes.MouseY) {
verticalRot -= Input.GetAxis("Mouse Y") * sensitivityVert;
verticalRot = Mathf.Clamp(verticalRot, minimumVert, maximumVert);

float horizontalRot = transform.localEulerAngles.y;

transform.localEulerAngles = new Vector3(verticalRot, horizontalRot, 0);
}
else {
verticalRot -= Input.GetAxis("Mouse Y") * sensitivityVert;
verticalRot = Mathf.Clamp(verticalRot, minimumVert, maximumVert);
float delta = Input.GetAxis("Mouse X") * sensitivityHor;
float horizontalRot= transform.localEulerAngles.y + delta;

transform.localEulerAngles = new Vector3(verticalRot, horizontalRot, 0);
}
}
}
Wutangers
UNец
 
Сообщения: 2
Зарегистрирован: 07 сен 2023, 21:25


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16