Сбор бонусов

Программирование на Юнити.

Сбор бонусов

Сообщение ziat 30 ноя 2009, 19:26

Задача проста и заключается в собирании бонусов(патронов аптечек и прочих предметов).

Как я преполагал решить
бонус я сделал небольшим колайдером.
На него вешается скрипт, что при столкновении с объектом с тагом "Player" уничтожится
А в кода объекта с тагом "Player" при столкновении с объектом "Bonus" сделать то-то то-то

Проблема
Собственно не пойму как получить таг объекта с которым столкнулись.
В Мануале надыбал две функции
GameObject.tag
и
Collision.gameObject

Но как выяснилось они подходят к GameObject с разных подходов, и поэтому не пойму как их подружить

Собственно Как их подружить или есть альтернативный вариант сбора бонусов(Тк мне этот скрипт ещё возможно пригодится в будущем)
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Сбор бонусов

Сообщение Tolking 30 ноя 2009, 20:05

А у тебя с бонусом может столкнуться что-то кроме Player?

Я бы делал наоборот в бонусе писал "Если со мной столкнулся Плеер, добавить ему жизни". Или лучше через растояние делал без колайдеров... "Если до плеера меньше метра добавить ему жизнь.

P.S. я не пробовал, но обычно стараются делать все одинаковым способом. Скорее всего из колизии получить геймобъект с которым столкнулись так: Collision.Transform.GameObject
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Сбор бонусов

Сообщение ziat 30 ноя 2009, 20:09

Может, поэтому и спрашиваю.

Хотя не спорю что может стать фичей если на подходе к аптечеке её сжирает недобитый противник...Как грится это не баг, а фича...
Но мне таких фич не надо)
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Сбор бонусов

Сообщение ziat 30 ноя 2009, 20:17

Collision.Transform.GameObject
Не помогло та же самая история

При T большое он пишет что Transfor не является частью Collision и спрашивает не ошибся ли я.
При t маленькое пишет следующее An instance of type 'UnityEngine.Collision' is required to access non static member 'transform'.

Тоже самое было и с теми двумя функциями, только камнем преткновения был GameObject
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Сбор бонусов

Сообщение Neodrop 30 ноя 2009, 21:08

Ну что за бред?

Collision.gameObject.tag

(c#)
Код: Выделить всё
void OnCollisionEnter(Collision  collision) {
   if(collision.gameObject.tag == "Player") Debug.Log("I'm moose");
}
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Сбор бонусов

Сообщение ziat 30 ноя 2009, 21:12

стоп... не ожидал редактирования
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Сбор бонусов

Сообщение Neodrop 30 ноя 2009, 21:13

Глаза протри. Смотри код выше.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Сбор бонусов

Сообщение ziat 30 ноя 2009, 21:15

Та же история(
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Сбор бонусов

Сообщение Neodrop 30 ноя 2009, 21:17

Тогда код в студию...
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Сбор бонусов

Сообщение ziat 30 ноя 2009, 21:20

Тк пишу на яве адаптировал под него
Код: Выделить всё
function OnCollisionEnter() {
   if(Collision.gameObject.tag == "Player") Destroy(GameObject);
}


collision с маленькой буквы не узнаёт.
Выдаёт следующие ошибки
Assets/Standard Assets/Scripts/Bonus/HealthBonus.js(2,17): BCE0020: An instance of type 'UnityEngine.Collision' is required to access non static member 'gameObject'.

Assets/Standard Assets/Scripts/Bonus/HealthBonus.js(2,52): BCE0023: No appropriate version of 'UnityEngine.Object.Destroy' for the argument list '(System.Type)' was found.

Последняя ошибка новая.
Висит скрипт на кубике с колайдером и ригид боди.
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Сбор бонусов

Сообщение Neodrop 30 ноя 2009, 21:23

Уф... Вы хотите чтобы у меня разлилась желчь? :-w
Вы не видете разницы меду вашим опусом и моим кодом? Ваша функция НЕ ПРИНИМАЕТ ПАРАМЕТРОВ. Откуда же возьмётся в ней параметр collision ???

Неужели так сложно хотя бы код правильно из справки скопировать??? :-?

(js)
Код: Выделить всё
var explosionPrefab : Transform;
function OnCollisionEnter(collision : Collision) {
// Rotate the object so that the y-axis faces along the normal of the surface
var contact = collision.contacts[0];
var rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
var pos = contact.point;
Instantiate(explosionPrefab, pos, rot);
// Destroy the projectile
Destroy (gameObject);
}
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Сбор бонусов

Сообщение ziat 30 ноя 2009, 21:26

Исправил таже две ошибка (вторую исправил поправив G у gameobject)
Код: Выделить всё
function OnCollisionEnter(collision : Collision) {
   if(Collision.gameObject.tag == "Player") Destroy(gameObject);
}
Последний раз редактировалось ziat 30 ноя 2009, 21:26, всего редактировалось 1 раз.
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт

Re: Сбор бонусов

Сообщение Neodrop 30 ноя 2009, 21:26

Давно не видел более идиотского кода.

Вот так он должен выглядеть :
Обратите внимание на Заглавные и Прописные буквы.

(js)
Код: Выделить всё
    function OnCollisionEnter(collision : Collision) {
       if(сollision.gameObject.tag == "Player") Destroy(gameObject);
    }
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Сбор бонусов

Сообщение ziat 30 ноя 2009, 21:29

Всё огромное спс) Извините за беспокойство.
тогда на маленькую с ругалось наверно из-за того что убил параметр в функции Изображение
:D
ziat
UNITрон
 
Сообщения: 199
Зарегистрирован: 07 окт 2009, 21:28
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8