Итак, я пытаюсь реализовать модель FPS, и камера находится на уровне глаз этой модели.
Модель основана на нескольких объектах в иерархии (у меня есть удалены все коллайдеры из дочерних объектов)
Модель имеет управление персонажами.
Камера является дочерним элементом этой модели.
Я все выстроил правильно.
Если повернуть вручную Модель, камера будет вращаться соответственно, и все в порядке.
Но когда я нажимаю кнопку «Воспроизвести», когда начинается симуляция, камера переходит в режим вращения (0,0,0)
Я не понимаю, что происходит. Я попытался вручную повернуться к камере при начальном методе вращения модели. но это не работает.
Перед игрой https://i.sstatic.net/eKW8G.jpg
После игры
https://i.sstatic.net/0ReY7.jpg
Скрипт просмотра мыши
public class mouselook : MonoBehaviour
{
public float mousesens = 100f;
public Transform playerBody;
float xRotation = 0f;
// Start is called before the first frame update
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
// transform.rotation = playerBody.rotation;
}
// Update is called once per frame
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * mousesens * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mousesens * Time.deltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
// transform.Rotate(Vector3.up * mouseX);
playerBody.Rotate(Vector3.up * mouseX);
}
}
Скрипт движения (IDK, если он имеет отношение к этой проблеме)
public class movement : MonoBehaviour
{
public CharacterController controller;
public float speed = 12f;
public float gravity = -9.81f;
public Transform groundCheck;
public float groundDistance = 0.4f;
public float jumpHeight = 3f;
public LayerMask groundMask;
Vector3 velocity;
bool isGrounded;
// Update is called once per frame
void Update()
{
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
if (isGrounded && velocity.y < 0)
{
velocity.y = -2f;
}
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Vector3 move = transform.right * x + transform.forward * z;
controller.Move(move * speed * Time.deltaTime);
if (Input.GetButtonDown("Jump") && isGrounded)
{
velocity.y += Mathf.Sqrt(jumpHeight * -2f * gravity);
}
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
}
}
Я подозреваю, что это будет какой-то простой ответ, на который я потратил часы.
Проблема в том, что С помощью этой строки в скрипте просмотра мышью
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
Подробнее здесь: https://stackoverflow.com/questions/600 ... i-hit-play
Камера меняет положение, когда я нажимаю кнопку «Воспроизвести» ⇐ C#
Место общения программистов C#
-
Anonymous
1734354364
Anonymous
Итак, я пытаюсь реализовать модель FPS, и камера находится на уровне глаз этой модели.[b]
Модель основана на нескольких объектах в иерархии (у меня есть удалены все коллайдеры из дочерних объектов)
Модель имеет управление персонажами.
Камера является дочерним элементом этой модели.
Я все выстроил правильно.
Если повернуть вручную Модель, камера будет вращаться соответственно, и все в порядке.
Но когда я нажимаю кнопку «Воспроизвести», когда начинается симуляция, камера переходит в режим вращения (0,0,0)
Я не понимаю, что происходит. Я попытался вручную повернуться к камере при начальном методе вращения модели. но это не работает.
Перед игрой [/b][b]https://i.sstatic.net/eKW8G.jpg
После игры [/b]
https://i.sstatic.net/0ReY7.jpg
Скрипт просмотра мыши
public class mouselook : MonoBehaviour
{
public float mousesens = 100f;
public Transform playerBody;
float xRotation = 0f;
// Start is called before the first frame update
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
// transform.rotation = playerBody.rotation;
}
// Update is called once per frame
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * mousesens * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mousesens * Time.deltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
// transform.Rotate(Vector3.up * mouseX);
playerBody.Rotate(Vector3.up * mouseX);
}
}
Скрипт движения (IDK, если он имеет отношение к этой проблеме)
public class movement : MonoBehaviour
{
public CharacterController controller;
public float speed = 12f;
public float gravity = -9.81f;
public Transform groundCheck;
public float groundDistance = 0.4f;
public float jumpHeight = 3f;
public LayerMask groundMask;
Vector3 velocity;
bool isGrounded;
// Update is called once per frame
void Update()
{
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);
if (isGrounded && velocity.y < 0)
{
velocity.y = -2f;
}
float x = Input.GetAxis("Horizontal");
float z = Input.GetAxis("Vertical");
Vector3 move = transform.right * x + transform.forward * z;
controller.Move(move * speed * Time.deltaTime);
if (Input.GetButtonDown("Jump") && isGrounded)
{
velocity.y += Mathf.Sqrt(jumpHeight * -2f * gravity);
}
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
}
}
Я подозреваю, что это будет какой-то простой ответ, на который я потратил часы.
Проблема в том, что С помощью этой строки в скрипте просмотра мышью
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
Подробнее здесь: [url]https://stackoverflow.com/questions/60066974/camera-changing-position-when-i-hit-play[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия