Этот тред был создан для агрегации вопросов-ответов и помощи по движку Unity. Наиболее фундаментальные моменты будем закреплять в теле поста.
Задавайте свои вопросы под этой публикацией. Чем сможем - поможем, Community как никак.
Смотрите также:
Комментарии
могу дать ссыли на ассеты, где есть ответы на твои вопросы и скрипты, но только послезавтра, щас компа нет
KO3bMA, alexprey, вы меня похоже не поняли :D
Мне нужен именно эффект "отдачи", не просто визуальная анимация или эффект. Т.е. при выстреле камера поднимается вверх "навсегда" (при длительной стрельбе для попадания в 1 точку нужно будет медленно вести мышку вниз).
Я как раз таки и юзал стандартный контроллер от первого лица. Но то ли дело в нём, то ли в целом в системе Юнити - поворот камера определяется положением курсора. Получается, сколько камеру не верти, если курсор мыши на месте, то она будет возвращаться к нему почти мгновенно (в итоге, если вертеть камеру при выстреле, получается эффект быстрой тряски, что тоже неплохо, но не то).
Поэтому я начал с вопроса о том, как двигать курсор мыши)
Immortal, я тебе понял, попробуй реализовать мой вариант с камерой, когда считается дельта не до центра а до предыдущего положения мыши
Immortal, скрипт примерно так будет выглядеть, не тестировал к сожалению, но думаю подкрутить не составит труда
public class FirstPersonCameraController : MonoBehaviour {
// Камера, которой будем управлять
public Camera TargetCamera;
// Чувствительность мыши по оси X
public float SensitiveX = 2.0f;
// Чувствительность мыши по оси Y
public float SensitiveY = 2.0f;
public float RotationSpeedX = 5.0f;
public float RotationSpeedY = 5.0f;
// Нижнее ограничение угла наклона камеры
public float MinPitchRestriction = -88.0f;
// Верхнее ограничение угла наклона камеры
public float MaxPitchRestriction = 88.0f;
public void Start() {
if (TargetCamera == null) {
// Используем основную камеру если цель не установлена
TargetCamera = Camera.main;
}
}
public void Update() {
if (TargetCamera == null) {
// НИчего не делаем если камера не задана
return;
}
var dx = Input.GetAxis("Mouse X") * SensitiveX;
var dy = Input.GetAxis("Mouse Y") * SensitiveY;
ApplyDeltaRotation(RotationSpeedX * dx, RotationSpeedY * dy);
}
// Применить отклонение камеры для отдачи
public void ApplyRecoil(float recoilForce) {
ApplyDeltaRotation(0.0f, recoilForce * 1.5f);
}
// Применить отклонение камеры для определенную разницу в угле
public void ApplyDeltaRotation(float dxAngle, float dyAngle) {
// Получаем вектор направления взгляда камеры в плоскости X0Z
var lookDirection = new Vector3(TargetCamera.transform.forward.x, 0.0f, TargetCamera.transform.forward.z);
lookDirection.Normalize();
// Получаем текущий угол наклона камеры
var currentPitchAngle = Vector3.SignAngle(lookDirection, TargetCamera.transform.forward);
var pitchAngleDelta = Mathf.Clamp(currentPitchAngle + dyAngle, MinPitchAngleRestriction, MaxPitchAngleRestriction) - currentPitchAngle;
// Поворот относительно горизонтальной оси (Вверх / Вниз)
var verticalRotation = Quaternion.AngleAxis(pitchAngleDelta, TargetCamera.transform.left);
// Поворот вокруг оси Y (Влево / Вправо)
var horizontalRotation = Quaternion.AngleAxis(dxAngle, Vector3.up);
TargetCamera.transform.rotation *= verticalRotation * horizontalRotation;
}
}кто может рассказать, что за новое пользовательское соглашение юнити, а то гуглперевод как то читать непонятно )
KO3bMA, скорее всего это последствия все того же GDPR и политика обновилась информацией о том, как твои персональные данные используются теперь и какие у тебя есть права для этого (например, запросить информацию о себе, которая у них есть).
PS. Сам я не читал и еще не видел это соглашение от юнити
Кто знает, каким образом можно улучшить качество панорамы для VR android ?
Сжатие текстур убрал. Сама панорама в качестве 8к, на ней все четко. Как только билдишь и одеваешь VR очки - все размыто.


<a href= http://mosros.flybb.ru/viewtopic.php?f=2&t=635>Процесс получения диплома стоматолога: реально ли это сделать быстро?</a>