Arcanoid. Тестовая программа.

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

Arcanoid. Тестовая программа.

Сообщение Sergey 18 июл 2010, 11:15

Только начал разбираться что есть что в Unity3D, потому прошу меня не пинать сильно.
Пытался наваять простенкий Arcanoid. Поглядел и в сторону SimpleArcanoid.7z (http://www.mediafire.com/file/mmkiywwhzqz/SimpleArcanoid.7) от Sergion. И пытался использовать Vector3.Reflect (которое обсуждалось на http://unity3d.ru/distribution/viewtopic.php?f=18&t=333&st=0&sk=t&sd=a&hilit=%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80+%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F).
Вроде бы и заработала программа, но есть три проблемы (Скрипт Energy_Ball ):
1. У mVect.y после Vector3.Reflect появляется значение отличное от нуля, а шарик у меня катается в плоскости XY. Пришлось принудительно обнулять.
2. Чем выше поставить скорость (значения mVect.x и mVect.z) тем больше вероятности что шарик пройдет сквозь препятствие (стену, ракетку Player_Ship) и выдет за приделы игрового поля. На значениях mVect.x=10 и mVect.z=5 вылетаетя почти сразу. Чем меньше значения - тем дольше шарик в игровом поле.
3. Иногда шарик почти проходит сквозь куб (препятствие на поле) и отражение идет явно не по законам физики....

Пробовал менять настройки у Edit->Project Settings->Time->Fixet Timestep в меньшую сторону. В этом случает шарик на больших скоростях остается в игровом поле чуточку дольше, но все равно покидает его.

Выложил проект на http://www.4shared.com/file/e0xu6-TP/Arcanoid.html.
Подскажите, где я накасячил???
Мои игры:Букварик
Sergey
UNец
 
Сообщения: 10
Зарегистрирован: 13 фев 2010, 07:55
  • Сайт

Re: Arcanoid. Тестовая программа.

Сообщение Serge 18 июл 2010, 18:18

В данном случае, чтобы корректно срабатывали коллизии, нельзя двигать Rigidbody командами от Transform. Я в некоторых примерах двигал Rigidbody через transform.Translate, но здесь это противопоказано, Rigidbody нужно двигать только командами физики. Исправьте, и ваш мяч останется на поле игры.
Теперь советы. В вашем примере достаточно иметь на уровне всего один Rigidbody, подвижный мяч, остальные элементы достаточно сделать просто колайдерами.
Я бы попробовал отказаться от Vector3.Reflect и поэкспериментировал с материалами http://unity3d.com/support/documentatio ... erial.html Правильно настроив материал и приложив к мячу постоянную силу можно добиться того же, а может и лучшего эффекта.
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Arcanoid. Тестовая программа.

Сообщение Serge 18 июл 2010, 18:38

Вот мой исправленый скрипт:
Синтаксис:
Используется csharp
public class fizReflect : MonoBehaviour
{
    Vector3 mVect;

    void FixedUpdate()
    {
        rigidbody.AddForce(mVect);
    }

    void OnCollisionEnter(Collision collision)
    {
        ContactPoint contact = collision.contacts[0];
        mVect = Vector3.Reflect(mVect, contact.normal);
    }
}
 


Удачи вам. :)
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Arcanoid. Тестовая программа.

Сообщение Sergey 18 июл 2010, 18:54

Спасибо за советы и подсказки. Буду пробовать.
Мои игры:Букварик
Sergey
UNец
 
Сообщения: 10
Зарегистрирован: 13 фев 2010, 07:55
  • Сайт


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

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

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