Вывод меню после смерти игрока
android555 Дата: Вс, 10 Апр 2016, 18:25 | Сообщение # 1
Сообщений: 5
Награды:
0
Репутация:
0
Статус: Offline
Ни как не пойму куда нужно вставить эти строкиКод
void OnDestroy { transform. parent . gameObject . GetComponent < GameOverScript >(); }
в скрипте PlayerScript что бы вызвать скрипт GameOverScript. В уроке сказано что нужно GameOverScript привязать к смерти. Это сам скрипт в который нужно добавить строкиКод
using UnityEngine ; public class PlayerScript : MonoBehaviour { /// /// 1 - скорость движения /// public Vector2 speed = new Vector2 ( 50 , 50 ); // 2 - направление движения private Vector2 movement ; void Update () { // 3 - извлечь информацию оси float inputX = Input . GetAxis ( "Horizontal" ); float inputY = Input . GetAxis ( "Vertical" ); // 4 - движение в каждом направлении movement = new Vector2 ( speed. x * inputX , speed. y * inputY ); // 5 - Стрельба bool shoot = Input . GetButtonDown ( "Fire1" ); shoot |= Input . GetButtonDown ( "Fire2" ); // Замечание: Для пользователей Mac, Ctrl + стрелка - это плохая идея if ( shoot ) { WeaponScript weapon = GetComponent < WeaponScript >(); if ( weapon != null ) { // ложь, так как игрок не враг weapon. Attack ( false ); SoundEffectsHelper . Instance . MakePlayerShotSound (); } } // 6 - Убедиться что игрок не выходит за рамки кадра var dist = ( transform . position - Camera . main . transform . position ). z ; var leftBorder = Camera . main . ViewportToWorldPoint ( new Vector3 ( 0 , 0 , dist )). x ; var rightBorder = Camera . main . ViewportToWorldPoint ( new Vector3 ( 1 , 0 , dist )). x ; var topBorder = Camera . main . ViewportToWorldPoint ( new Vector3 ( 0 , 0 , dist )). y ; var bottomBorder = Camera . main . ViewportToWorldPoint ( new Vector3 ( 0 , 1 , dist )). y ; transform. position = new Vector3 ( Mathf . Clamp ( transform . position . x , leftBorder , rightBorder ), Mathf . Clamp ( transform . position . y , topBorder , bottomBorder ), transform. position . z ); } void FixedUpdate () { // 5 - перемещение игрового объекта GetComponent < Rigidbody2D >(). velocity = movement ; } void OnCollisionEnter2D ( Collision2D collision ) { bool damagePlayer = false ; // Столкновение с врагом EnemyScript enemy = collision . gameObject . GetComponent < EnemyScript >(); if ( enemy != null ) { // Смерть врага HealthScript enemyHealth = GetComponent < HealthScript >(); if ( enemyHealth != null ) enemyHealth . Damage ( enemyHealth . hp ); damagePlayer = true ; } // Повреждения у игрока if ( damagePlayer ) { HealthScript playerHealth = GetComponent < HealthScript >(); if ( playerHealth != null ) playerHealth . Damage ( 1 ); } } }
Это кстати сайт с которого я брал скрипты для игры - http://websketches.ru/blog/2d-igra-na-unity-podrobnoye-rukovodstvo-p6
Сообщение отредактировал android555 - Пн, 11 Апр 2016, 13:05
Сообщение Ни как не пойму куда нужно вставить эти строкиКод
void OnDestroy { transform. parent . gameObject . GetComponent < GameOverScript >(); }
в скрипте PlayerScript что бы вызвать скрипт GameOverScript. В уроке сказано что нужно GameOverScript привязать к смерти. Это сам скрипт в который нужно добавить строкиКод
using UnityEngine ; public class PlayerScript : MonoBehaviour { /// /// 1 - скорость движения /// public Vector2 speed = new Vector2 ( 50 , 50 ); // 2 - направление движения private Vector2 movement ; void Update () { // 3 - извлечь информацию оси float inputX = Input . GetAxis ( "Horizontal" ); float inputY = Input . GetAxis ( "Vertical" ); // 4 - движение в каждом направлении movement = new Vector2 ( speed. x * inputX , speed. y * inputY ); // 5 - Стрельба bool shoot = Input . GetButtonDown ( "Fire1" ); shoot |= Input . GetButtonDown ( "Fire2" ); // Замечание: Для пользователей Mac, Ctrl + стрелка - это плохая идея if ( shoot ) { WeaponScript weapon = GetComponent < WeaponScript >(); if ( weapon != null ) { // ложь, так как игрок не враг weapon. Attack ( false ); SoundEffectsHelper . Instance . MakePlayerShotSound (); } } // 6 - Убедиться что игрок не выходит за рамки кадра var dist = ( transform . position - Camera . main . transform . position ). z ; var leftBorder = Camera . main . ViewportToWorldPoint ( new Vector3 ( 0 , 0 , dist )). x ; var rightBorder = Camera . main . ViewportToWorldPoint ( new Vector3 ( 1 , 0 , dist )). x ; var topBorder = Camera . main . ViewportToWorldPoint ( new Vector3 ( 0 , 0 , dist )). y ; var bottomBorder = Camera . main . ViewportToWorldPoint ( new Vector3 ( 0 , 1 , dist )). y ; transform. position = new Vector3 ( Mathf . Clamp ( transform . position . x , leftBorder , rightBorder ), Mathf . Clamp ( transform . position . y , topBorder , bottomBorder ), transform. position . z ); } void FixedUpdate () { // 5 - перемещение игрового объекта GetComponent < Rigidbody2D >(). velocity = movement ; } void OnCollisionEnter2D ( Collision2D collision ) { bool damagePlayer = false ; // Столкновение с врагом EnemyScript enemy = collision . gameObject . GetComponent < EnemyScript >(); if ( enemy != null ) { // Смерть врага HealthScript enemyHealth = GetComponent < HealthScript >(); if ( enemyHealth != null ) enemyHealth . Damage ( enemyHealth . hp ); damagePlayer = true ; } // Повреждения у игрока if ( damagePlayer ) { HealthScript playerHealth = GetComponent < HealthScript >(); if ( playerHealth != null ) playerHealth . Damage ( 1 ); } } }
Это кстати сайт с которого я брал скрипты для игры - http://websketches.ru/blog/2d-igra-na-unity-podrobnoye-rukovodstvo-p6 Автор - android555 Дата добавления - 10 Апр 2016 в 18:25
Левша Дата: Вс, 10 Апр 2016, 19:31 | Сообщение # 2
Черный Волк
Сообщений: 7257
Награды:
30
Репутация:
3313
Статус: Offline
Цитата android555 (
)
сайт с которого я брал скрипты для игры
Может проще там и спросить ?
X.cor.R (Prologue)
Сообщение Цитата android555 (
)
сайт с которого я брал скрипты для игры
Может проще там и спросить ?Автор - Левша Дата добавления - 10 Апр 2016 в 19:31
android555 Дата: Вс, 10 Апр 2016, 19:56 | Сообщение # 3
Сообщений: 5
Награды:
0
Репутация:
0
Статус: Offline
Цитата Левша (
)
Может проще там и спросить ?
Там нет форума или какой то обратной связи. Просто пример урока переведенный с английского(находил оригинал)
Сообщение Цитата Левша (
)
Может проще там и спросить ?
Там нет форума или какой то обратной связи. Просто пример урока переведенный с английского(находил оригинал)Автор - android555 Дата добавления - 10 Апр 2016 в 19:56
NapalmRain Дата: Пн, 11 Апр 2016, 10:26 | Сообщение # 4
Сообщений: 473
Награды:
0
Репутация:
31
Статус: Offline
1. оформляйте код в соответствующие теги. Сейчас это читать невозможно. 2. если брали скрипты с урока, внимательно читайте/смотрите урок.
Сообщение 1. оформляйте код в соответствующие теги. Сейчас это читать невозможно. 2. если брали скрипты с урока, внимательно читайте/смотрите урок. Автор - NapalmRain Дата добавления - 11 Апр 2016 в 10:26
android555 Дата: Пн, 11 Апр 2016, 12:39 | Сообщение # 5
Сообщений: 5
Награды:
0
Репутация:
0
Статус: Offline
Цитата NapalmRain (
)
1. оформляйте код в соответствующие теги. Сейчас это читать невозможно. 2. если брали скрипты с урока, внимательно читайте/смотрите урок.
1. Оформил. 2. Я уже перечитал там всё 100 раз. Поэтому и обратился за помощью.
Сообщение Цитата NapalmRain (
)
1. оформляйте код в соответствующие теги. Сейчас это читать невозможно. 2. если брали скрипты с урока, внимательно читайте/смотрите урок.
1. Оформил. 2. Я уже перечитал там всё 100 раз. Поэтому и обратился за помощью.Автор - android555 Дата добавления - 11 Апр 2016 в 12:39
NapalmRain Дата: Пн, 11 Апр 2016, 13:59 | Сообщение # 6
Сообщений: 473
Награды:
0
Репутация:
31
Статус: Offline
android555 , ну, достаточно очевидно, что эти строки нужно добавить в скрипт того объекта, который будет уничтожаться. Если у вас подразумевается, что игрок при смерти уничтожается, то добавляете эти строки в скрипт, который висит на игроке. или если у вас уничтожается какой-то компонент на игроке, до добавляется именно в этот компонент. Это стандартное инитиевское событие ОнДестртой ("При уничтожении") А вообще система, на мой взгляд , мягко говоря, не очень... Посоветовал бы вам почитать официальную документацию и посмотреть официальные уроки. Практически всё что нужно можно найти там.
Сообщение android555 , ну, достаточно очевидно, что эти строки нужно добавить в скрипт того объекта, который будет уничтожаться. Если у вас подразумевается, что игрок при смерти уничтожается, то добавляете эти строки в скрипт, который висит на игроке. или если у вас уничтожается какой-то компонент на игроке, до добавляется именно в этот компонент. Это стандартное инитиевское событие ОнДестртой ("При уничтожении") А вообще система, на мой взгляд , мягко говоря, не очень... Посоветовал бы вам почитать официальную документацию и посмотреть официальные уроки. Практически всё что нужно можно найти там.Автор - NapalmRain Дата добавления - 11 Апр 2016 в 13:59
android555 Дата: Пн, 11 Апр 2016, 19:15 | Сообщение # 7
Сообщений: 5
Награды:
0
Репутация:
0
Статус: Offline
Цитата NapalmRain (
)
А вообще система, на мой взгляд, мягко говоря, не очень...
Согласен, хоть я и не разбираюсь в скриптах мне тоже кажется что система корявенькая Мне кажется, если бы сам писал, то можно было сделать лучше. Но пока я только изучаю С#(в свободное время на работе читаю Герберт Шилдт - C# 4.0 Полное руководство) приходится брать что есть. А проблему я решил следующим способом: создал сцену Game Over и прикрепил к ней скрипт GameOverScript который выводит 2 кнопки - Retry & Main menu. В скрипте PlayerScript добавил следующее:Код
void OnDestroy { SceneManager . LoadScene ( "GameOver" ); }
Сообщение Цитата NapalmRain (
)
А вообще система, на мой взгляд, мягко говоря, не очень...
Согласен, хоть я и не разбираюсь в скриптах мне тоже кажется что система корявенькая Мне кажется, если бы сам писал, то можно было сделать лучше. Но пока я только изучаю С#(в свободное время на работе читаю Герберт Шилдт - C# 4.0 Полное руководство) приходится брать что есть. А проблему я решил следующим способом: создал сцену Game Over и прикрепил к ней скрипт GameOverScript который выводит 2 кнопки - Retry & Main menu. В скрипте PlayerScript добавил следующее:Код
void OnDestroy { SceneManager . LoadScene ( "GameOver" ); }
Автор - android555 Дата добавления - 11 Апр 2016 в 19:15
NapalmRain Дата: Пн, 11 Апр 2016, 20:49 | Сообщение # 8
Сообщений: 473
Награды:
0
Репутация:
31
Статус: Offline
android555 , тоже вариант. Но я бы посоветовал просто сделать canvas новой системы UI в юнити. Внутри сделать панель с двумя кнопками, и canvas выключить (снять галочку enabled с него) а при смерти enabled канваса снова делать тру.
Сообщение android555 , тоже вариант. Но я бы посоветовал просто сделать canvas новой системы UI в юнити. Внутри сделать панель с двумя кнопками, и canvas выключить (снять галочку enabled с него) а при смерти enabled канваса снова делать тру.Автор - NapalmRain Дата добавления - 11 Апр 2016 в 20:49
DjeeZ Дата: Вт, 12 Апр 2016, 06:49 | Сообщение # 9
Сообщений: 270
Награды:
8
Репутация:
291
Статус: Offline
Извините что вмешиваюсь, мужики. Обычно я молча читаю. Но сейчас, толком, не проснувшись вошел на форум и аж вздрогнул, прочитав название темы. В голове мгновенно возникла надпись: "Мама игрока, наша компания приносит вам свои соболезнования, и сожалеет что именно во время нашей игры ваш сын двинул копыта". Укокашивайте "персонажа" (перса), пожалуйста, в своих выражениях.
Сообщение Извините что вмешиваюсь, мужики. Обычно я молча читаю. Но сейчас, толком, не проснувшись вошел на форум и аж вздрогнул, прочитав название темы. В голове мгновенно возникла надпись: "Мама игрока, наша компания приносит вам свои соболезнования, и сожалеет что именно во время нашей игры ваш сын двинул копыта". Укокашивайте "персонажа" (перса), пожалуйста, в своих выражениях. Автор - DjeeZ Дата добавления - 12 Апр 2016 в 06:49
android555 Дата: Вт, 12 Апр 2016, 14:09 | Сообщение # 10
Сообщений: 5
Награды:
0
Репутация:
0
Статус: Offline
Цитата NapalmRain (
)
android555, тоже вариант. Но я бы посоветовал просто сделать canvas новой системы UI в юнити. Внутри сделать панель с двумя кнопками, и canvas выключить (снять галочку enabled с него) а при смерти enabled канваса снова делать тру.
Спасибо за совет, наверное я так и сделаю.Добавлено (12 Апр 2016, 14:09) ---------------------------------------------
Цитата DjeeZ (
)
"Мама игрока, наша компания приносит вам свои соболезнования, и сожалеет что именно во время нашей игры ваш сын двинул копыта".
Ну, не исключено что так и будет. Цитата DjeeZ (
)
Укокашивайте
Давненько я не слышал это словечко
Сообщение Цитата NapalmRain (
)
android555, тоже вариант. Но я бы посоветовал просто сделать canvas новой системы UI в юнити. Внутри сделать панель с двумя кнопками, и canvas выключить (снять галочку enabled с него) а при смерти enabled канваса снова делать тру.
Спасибо за совет, наверное я так и сделаю.Добавлено (12 Апр 2016, 14:09) ---------------------------------------------
Цитата DjeeZ (
)
"Мама игрока, наша компания приносит вам свои соболезнования, и сожалеет что именно во время нашей игры ваш сын двинул копыта".
Ну, не исключено что так и будет. Цитата DjeeZ (
)
Укокашивайте
Давненько я не слышал это словечко Автор - android555 Дата добавления - 12 Апр 2016 в 14:09