Автор оригинальной записи (Adding Camera Shake) сделал этот эффект тряски камеры при столкновении корабля с препятствием для своего проекта. Но скрипт написан достаточно универсальным, так что использовать его у себя можно довольно легко. Один только вопрос. Зачем выкладывать пример кода… КАРТИНКОЙ!?
Я-то его считал, любой бы смог, но сам факт. Если уж ты его выложил сюда, в общий доступ, то мог бы уже и выложить как человек. Но это так, лирика, в любом случае спасибо. Хотя само решение далеко до идеала.
Перевод статьи «Добавляем эффект тряски»
Следующей задачей было добавить сотрясение камеры при повреждениях игрока. По сути, чтобы имитировать тряску, вам просто нужно будет временно часто перемещать камеру в случайных местах. Вот моя реализация для этого.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShakeCameraEffect : MonoBehaviour { public float _duration = .8f; private Transform _cameraTransform; private Vector3 _originalPosition; void Start() { _cameraTransform = GetComponent<Transform>(); _originalPosition = _cameraTransform.transform.position; } public void Shake() { StartCoroutine(_Shake()); } IEnumerator _Shake() { float x; float y; float timeLeft = Time.time; while ((timeLeft + _duration) > Time.time) { x = Random.Range(-0.3f, 0.3f); y = Random.Range(-0.3f, 0.3f); _cameraTransform.position = new Vector3(x, y, _originalPosition.z); yield return new WaitForSeconds(0.025f); } _cameraTransform.position = _originalPosition; } } |
От переводчика. Простое решение, и далеко не идеальное. Например, для 3D сцены эффект тряски получат только объекты на сцене, но не Skybox или Canvas. Но если кому-то интересно как сделать подобное, или подходит именно такая реализация, то класс.
Пингбэк: Уроки по Unity – GeekStand