2015-01-19 2 views

ответ

2

В ссылке вы вывесили есть:

// How long the object should shake for. 
    public float shake = 0f; 

Если переменная shake установлена ​​на, например, 1 камера будет трясти до тех пор, как это больше, чем один. Код уменьшает значение, так что установленный вами номер эквивалентен секундам, которые вы хотите, чтобы встряска продолжалась.

Тогда как трясти, когда пуля что-то ударяет? Вы можете добавить код в пулю, которая начинает дрожать. Это можно сделать при столкновении пули. Используйте примерно следующее:

public class BulletScript : MonoBehaviour { 
    void OnCollisionEnter2D(Collision2D coll) { 
     GameObject.Find("Main Camera").GetComponent<CameraShake>().shake = 0.25f; 
    } 
} 

Для этого вам необходимо, чтобы пуля и встречная часть имели 2D-коллайдеры.

PS. Find работает очень медленно, поэтому вы можете оптимизировать код, указав указатель на CameraShake в статическую переменную только один раз в сцене.

+0

спасибо! 'GameObject.Find (« Основная камера »). GetComponent () .shake = 0.25f;' С помощью этой строки я могу изменить общедоступную переменную в любое время? – Gabe

+1

Да. 'GameObject.Find (« Главная камера »)' находит gameObject на основе имени gameObjects, '.GetComponent ()' получает компонент в этом gameObject на основе типа компонента и, наконец, '.shake' обращается к переменной. – maZZZu

Смежные вопросы