Главная » Статьи » Space Shooter Unity3D |
Теперь сделаем, чтобы при столкновении астероида с шаттлом, шаттл взрывался, а если столкнутся пуля и астероид – они оба взрываются. Начнем с того, что нужно астероид сделать предметом, на который действует сила тяжести, трения и другие силы. Выделите астероид и в левом углу Component -> Physics -> Rigidbody. Дальше у астероида появляется группа свойств Rigidbody, в котором вам нужно отключить гравитацию для данного тела, снимаете галку с Use Gravity. Если вы этого не сделаете, то он будет падать вниз и никогда не столкнется с шаттлом. И в Constraints выделяете все. Дальше нужно взять префаб взрыва, я взял large frames, отсюда Standart Assets -> Particles -> Legacy Particles -> large frames. Настроил его так: Min Size=10, Max Size=15, Min Energy = 10, Max Energy = 15. Убираете в сторонку. Метод OnCollisionEnter удобен для проверки столкновении, поэтому мы будем пользоваться им. Но перед этим поставьте тэг Finish у астероида, делается так: И теперь в скрипт SpaceActions: Объявите public GameObject explosion; void OnCollisionEnter(Collision hit) { if(hit.gameObject.tag == "Finish") { GameObject explosionClone = Instantiate(explosion) as GameObject; explosionClone.transform.position = transform.position; transform.position = new Vector3(-351.6443f,0,Random.Range(-211.575f, 182.9035f));Destroy(hit.gameObject); Destroy(explosionClone, 3.0f); } } В объекте шаттла определяете explosion на large frames. Если взрыв работает ненормально, поменяйте его настройки. С астероидом тоже самое, но с небольшими изменениями: void OnCollisionEnter(Collision collision) { if(collision.gameObject.tag == "Bullet") { GameObject explosionClone; explosionClone = Instantiate(explosion, transform.position, transform.rotation) as GameObject; Destroy(collision.gameObject); Destroy(explosionClone.gameObject, 0.5f); transform.position = new Vector3(-351.6443f,-763.0072f,Random.Range(-211.575f, 182.9035f)); } } Подставьте свои числа в последней строчке, наверно не надо объяснять, что это за числа такие. Теперь давайте добавим звук. Скачайте данный аудиофайл и импортируйте его в Юнити. После импорта приаттачте к шаттлу и астероиду, снимите галку с Play on Awake в появившихся свойствах. И в методы проверки столкновений добавьте эти строки: audio.Play(); Всё кажется на этом всё. Если что-то непонятно не стесняйтесь спрашивать. WiFi: беспроводная свобода с компанией WTS. Установка, настройка, поддержка WiFi в Ставрополе и Ставропольском крае. | |
Категория: Space Shooter Unity3D | Добавил: Шаке (10.01.2012) | |
Просмотров: 3106 | Комментарии: 1
| Теги: |
Всего комментариев: 1 | ||
| ||