Четверг, 21 Ноября 2019, 14:02

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 52
  • 1
  • 2
  • 3
  • 51
  • 52
  • »
Форум игроделов » Записи участника » zaicev9797 [1032]
Результаты поиска
zaicev9797Дата: Четверг, 17 Октября 2019, 18:38 | Сообщение # 1 | Тема: Кватернионы, Эйлеры, Матан, ИИ
AbRaKaDaBrA
Сейчас нет на сайте
Имеется самолетик склеенный как конструктор и к нему прицеплена пачка движков. Он может PitchUp(a), PitchDown(a), YawRight(a), YawLeft(a), RollRight(a), RollLeft(a) относительно себя самого, и какими движками подруливать разбирается сам.
Например он неплохо может гасить момент и инерцию этими тремя методами, если игрок не управляет бандурой в данный момент.

Имеется вектор в направлении от самолета к цели

Как заставить его повернуться параллельно этому вектору "не читерным" способом (тоесть вот этими шестью методами, которыми он располагает)?

для меня показалось очевидным, что мне нужно как то получить Вектор3, чтоб понять как поворачивать.
пробовал получить нужный вектор так

Код
Vector3 dir = targetTransform.position - transform.position;
Quaternion qr = Quaternion.LookRotation(dir, targetTransform.up);
Vector3 vr = qr.eulerAngles;


так

Код
Quaternion qr = Quaternion.FromToRotation(transform.forward, (transform.position - targetTransform.position).normalized);
Vector3 vr = qr.eulerAngles;


и так

Код
Vector3 dir = transform.forward;
Vector3 neededDir = (transform.position - targetTransform.position).normalized;
float angle = Vector3.Angle(dir, neededDir);
Vector3 vr = Vector3.Cross(dir, neededDir)*(180-angle);

тут по отдельности (если не вращать по Х или не вращать по У) работает правильно.
Если же разрешить ему одновременно подруливать и по Х и по У то работает почти норм, но в некоторых случаях он смотрит рожей, а в некоторых поворачивается задницей.
Тут я долго пытался понять в чем трабл, в иттоге мой качан сей матан не осилил, за сим пришел сюда за помощью.

Добавлено (19 Октября 2019, 10:10)
---------------------------------------------
может где то что то почитать можно в более менее доходчивом виде, может с примерами. Ато чот в универе такие геметро-матанячьи приколы как то не освещались совсем

Добавлено (19 Октября 2019, 11:39)
---------------------------------------------
Нда, а ошибка то смешная... Не забывайте следить за тем, когда вы используете глобальные, а когда локальные координаты.
В этом была моя ошибка.


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Суббота, 19 Октября 2019, 10:08
zaicev9797Дата: Вторник, 25 Июня 2019, 22:09 | Сообщение # 2 | Тема: Воксели, Texture3d, волюметрика, шейдеры. Что посмотреть?
AbRaKaDaBrA
Сейчас нет на сайте
пытался разобраться, как работает вот это
https://www.youtube.com/watch?v=mvXCo_qG300
https://www.youtube.com/watch?v=LolerRBhaAs
и нифига не понял, кроме того что там используют воксели, 3ДТекстуры и возможно волюметрику (как я понял это все вещи приблизительно одной оперы)
Но вот чот найти что то этому поводу в ютубе не смог.
Кто что может подсказать, подкинуть?


проект Mysterious Space. The losted moment
zaicev9797Дата: Суббота, 15 Июня 2019, 05:59 | Сообщение # 3 | Тема: Массив содержащий компоненты игрового обьекта
AbRaKaDaBrA
Сейчас нет на сайте
Цитата drcrack ()
ООП, там все обьясняется с примерами

Дак вот читал же ведь. И в унике читали курс по ООП, но как правило примеры и там и там ограничиваются двумя - тремя классами с простейшими примерами типа банковских счетов, по которым сложно представить как работает тот или иной тип классов или паттерн. Может плохо искал, но вот не видел я более крупных примеров, где разрабатывается более менее обьемная взаимосвязанная система.
Цитата pixeye ()
Если игру то тебе действительно нужен настолько большой уровень абстракции ?

А вот это уже хороший вопрос, может и действительно не нужен, я сам еще в раздумиях так сказать. С одной стороны хочется разобраться в том, как это у крупных дядек работает, с другой стороны супер навороченых игр я вроде тоже не собираюсь делать (покрайней мере не на самописных велосипедах)


проект Mysterious Space. The losted moment
zaicev9797Дата: Пятница, 14 Июня 2019, 21:40 | Сообщение # 4 | Тема: Массив содержащий компоненты игрового обьекта
AbRaKaDaBrA
Сейчас нет на сайте
про виртуальные методы знаю. Но все дело в отсутствии практики с ними.
Вроде уже на втором курсе, и половине одногрупников курсачи на сях писать умудряюсь, а вот виртуальными методами так и не научился пользоваться.
В общем то я за помощью сюда и прибыл. Точно не за отправлением в детский садик. Вот если покажете пример решения и улучшения такого говнокода, вот это будет действительно круто.


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Пятница, 14 Июня 2019, 21:41
zaicev9797Дата: Пятница, 14 Июня 2019, 20:26 | Сообщение # 5 | Тема: Массив содержащий компоненты игрового обьекта
AbRaKaDaBrA
Сейчас нет на сайте
как можно сделать чтоб внутри класса GameObject можно было хранить массив или список наследников класса Component (например TransfromComponent : public Component или Collider : public Component и т.д.)
У Component есть метод Update. соответственно я хочу чтоб GameObject который содержит набор экземпляров разных наследников Component мог вызывать их Update.
Как такое можно сделать?

В данный момент, если я придумываю новый компонент который можно было бы прицепить к GameObject мне приходится прописывать однотипные методы которые отличаются только типом компонента, а так же отдельные поля для хранения каждого типа компонента.

Короче выглядит это вот так, и что то мне подсказывает, что это лютая дичь
Код
class GameObject{
    TransformComponent *transform;
    Body *body;
    Collider *collider;
    DrawComponent *draw;
    Spacecraft *spacecraft;
    ParticleController *particleController;
    ParticleSystem *particleSystem;
    BackgroundController *backgroundController;
    FireController *fireController;
    Button *button;
    TextWindow *textWindow;
    FireLight *fireLightController;
    WeaponLight *weaponLightController;
    ExplosionLight *explosionLightController;
    Asteroid *asteroidController;
    ExplosionController *explosionController;
    PlayerController *playerController;
    EngineParticleController *engineParticleController;
    Bullet *bulletController;
    Weapon *weaponController;
    AsteroidSpawner *asteroidSpawnerController;
    bool destroy = false;
    String tag;
public:
    GameObject()
    {
  transform = NULL;
  body = NULL;
  collider = NULL;
  draw = NULL;
  spacecraft = NULL;
  particleSystem = NULL;
  particleController = NULL;
  backgroundController = NULL;
  fireController = NULL;
  button = NULL;
  textWindow = NULL;
  fireLightController = NULL;
  asteroidController = NULL;
  explosionController = NULL;
  playerController = NULL;
  bulletController = NULL;
  weaponController = NULL;
  weaponLightController = NULL;
  explosionLightController = NULL;
  asteroidSpawnerController = NULL;
    }

    void SetTransform(TransformComponent *_trnasform)
    {
  transform = _trnasform;
  tag = transform->GetTag();
    }
    void SetDrawComponent(DrawComponent *_draw){draw = _draw;}
    void SetCollider(Collider *_collider){collider = _collider;}
    void SetBody(Body *_body){body = _body;}
    void SetSpacecraft(Spacecraft *_spacecraft){spacecraft = _spacecraft;}
    void SetParticleController(ParticleController *_particleController){particleController = _particleController;}
    void SetBackgroundController(BackgroundController *_backgroundController){backgroundController = _backgroundController;}
    void SetButtonController(Button *_button){button = _button;}
    void SetParticleSystem(ParticleSystem *_particleSystem){particleSystem = _particleSystem;}
    void SetFireController(FireController *_fireController){fireController = _fireController;}
    void SetTextWindowController(TextWindow *_textWindow){textWindow = _textWindow;}
    void SetFireLitghtController(FireLight *_fireLightController){fireLightController = _fireLightController;}
    void SetAteroidController(Asteroid *_asteriodController){asteroidController = _asteriodController;}
    void SetExplosionController(ExplosionController *_explosionController){explosionController = _explosionController;}
    void SetPlayerController(PlayerController *_playerController){playerController = _playerController;}
    void SetEngineParticleController(EngineParticleController *_engineParticleController){engineParticleController = _engineParticleController;}
    void SetBulletController(Bullet *_bulletController){bulletController = _bulletController;}
    void SetWeaponController(Weapon *_weapon) { weaponController = _weapon; }
    void SetWeaponLightController(WeaponLight *_weaponLight) { weaponLightController = _weaponLight; }
    void SetExplosionLightController(ExplosionLight *_explosionLight) { explosionLightController = _explosionLight; }
    void SetAsteroidSpawnerController(AsteroidSpawner *_asteroidSpawner) { asteroidSpawnerController = _asteroidSpawner; }

    TransformComponent* GetTransformComponent(){return transform;}
    DrawComponent* GetDrawComonent(){return draw;}
    Collider* GetCollider() {return collider;}
    Body *GetBody(){return body;}
    Spacecraft *GetSpacecraft(){return spacecraft;}
    ParticleController *GetParticleController(){return particleController;}
    BackgroundController *GetBackgroundController(){return backgroundController;}
    Button *GetButton() { return button; }
    TextWindow *GetTextWindow(){return textWindow;}
    FireLight *GetFireLightController(){return fireLightController;}
    Asteroid *GetAsteroidController(){return asteroidController;}
    ExplosionController *GetExplosionController(){return explosionController;}
    PlayerController *GetPlayerController(){return playerController;}
    EngineParticleController *GetEngineParticleController(){return engineParticleController;}
    bool GetDestroy(){return destroy;}
    ParticleSystem *GetParticleSystem(){return particleSystem;}
    FireController *GetFireController(){return fireController;}
    Bullet *GetBulletController(){return bulletController;}
    Weapon *GetWeaponController() { return weaponController; }
    WeaponLight *GetWeaponLightController() { return weaponLightController; }
    ExplosionLight *GetExplosionLightController() { return explosionLightController; }
    AsteroidSpawner *GetAsteroidSpwnerController() { return asteroidSpawnerController; }
    String *GetTag(){return &tag;}
    void Update(RenderWindow &window)
    {
  //printf("\n\n%s \n", transform->GetName().toAnsiString().c_str());
  if (backgroundController != NULL){backgroundController->Update();}
  if (textWindow != NULL){textWindow->Update(window);}
  if (button != NULL){button->Update(window);}
  if (body != NULL){body->Update();}
  if (spacecraft != NULL){spacecraft->Update();}
  if (particleSystem != NULL){particleSystem->Update();}
  if (particleController != NULL){particleController->Update();}
  if (fireController != NULL){fireController->Update();}
  if (fireLightController != NULL){fireLightController->Update();}
  if (asteroidController != NULL){asteroidController->Update();}
  if (explosionController != NULL){explosionController->Update();}
  if (playerController != NULL){playerController->Update();}
  if (engineParticleController != NULL){engineParticleController->Update();}
  if (bulletController != NULL){bulletController->Update();}
  if (weaponController != NULL) { weaponController->Update(); }
  if (weaponLightController != NULL) { weaponLightController->Update(); }
  if (explosionLightController != NULL) { explosionLightController->Update(); }
  if (asteroidSpawnerController != NULL) { asteroidSpawnerController->Update(); }
  if (draw != NULL){draw->Draw(window);}
    }

    void Destroy()
    {
  if (transform != NULL){transform->Destroy();}
  if (collider != NULL){collider->Destroy();}
  if (draw != NULL){draw->Destroy();}
  if (body != NULL){body->Destroy();}
  if (spacecraft != NULL){spacecraft->Destroy();}
  if (particleController != NULL){particleController->Destroy();}
  if (particleSystem != NULL){particleSystem->Destroy();}
  if (backgroundController != NULL) { backgroundController->Destroy(); }
  if (button != NULL){button->Destroy();}
  if (textWindow != NULL){textWindow->Destroy();}
  if (fireController != NULL){fireController->Destroy();}
  if (asteroidController != NULL){asteroidController->Destroy();}
  if (fireLightController != NULL){fireLightController->Destroy();}
  if (explosionController != NULL){explosionController->Destroy();}
  if (playerController != NULL){playerController->Destroy();}
  if (engineParticleController != NULL){engineParticleController->Destroy();}
  if (bulletController != NULL){bulletController->Destroy();}
  if (weaponController != NULL) { weaponController->Destroy(); }
  if (weaponLightController != NULL) { weaponLightController->Destroy(); }
  if (explosionLightController != NULL) { explosionLightController->Destroy(); }
  if (asteroidSpawnerController != NULL) { asteroidSpawnerController->Destroy(); }
  destroy = true;
    }
};


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Пятница, 14 Июня 2019, 20:27
zaicev9797Дата: Пятница, 14 Июня 2019, 09:57 | Сообщение # 6 | Тема: как написать большую игру на C++ & SFML (не 3d)
AbRaKaDaBrA
Сейчас нет на сайте
вопрос скорее больше архитектуры касается нежели самого языка программирования.
Хочется спроектировать самостоятльно рабочую систему, дабы понимать хотябы приблизительно, как это работает у больших дядек типа unity или unreal
В идеале конечно хотелось бы иметь систему на подобии unity когда у нас есть некоторый обьект gameObject а к нему можно добавлять всевозможные компоненты типа физики, коллайдеров, логики искуственного интелекта или контроллера для игрока. А потом комбинируя различные компоненнты наделять игровые обьекты необходимыми свойствами и способностями. Как такое можно реализовать на C++, что почитать?
предположим что для мультимедийных функций я буду использовать sfml. Она легко подключается и в принципе проста в использовании, обеспечивает вывод графики и звука.


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Пятница, 14 Июня 2019, 10:26
zaicev9797Дата: Среда, 20 Марта 2019, 20:57 | Сообщение # 7 | Тема: Как сделать сложную игру на Android и не облажаться
AbRaKaDaBrA
Сейчас нет на сайте
В свете отупления телефонопользователей - актуальный вопрос, как мне кажется.

проект Mysterious Space. The losted moment
zaicev9797Дата: Понедельник, 25 Февраля 2019, 19:40 | Сообщение # 8 | Тема: СУБД для курсача
AbRaKaDaBrA
Сейчас нет на сайте
ну мне не так важно, чтоб летало. Мне важно чтоб вообще работало хотябы. Плюс задумка - шахматы. Там хоть 15 фпс будет - не проблема.
плюс если вдруг универовские компы реально не потянут, всегда можно показать на ноуте, а на нем точно заработет.
В общем Основной вопрос из топика таки остается открытым.


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Понедельник, 25 Февраля 2019, 19:45
zaicev9797Дата: Понедельник, 25 Февраля 2019, 18:01 | Сообщение # 9 | Тема: СУБД для курсача
AbRaKaDaBrA
Сейчас нет на сайте
Цитата martuk ()
ограничение учебных компьютеров

Компы в универе в принципе должны запустить игруху по идее. Там четырехядерные амудешки стоят и 4 гига оперативы. Вопрос ток в видюхе, но я думаю тоже проблем не должно возникнуть. В конце концов на тех компах даже андроид студию запускали и работали в ней.


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Понедельник, 25 Февраля 2019, 18:03
zaicev9797Дата: Понедельник, 25 Февраля 2019, 17:07 | Сообщение # 10 | Тема: СУБД для курсача
AbRaKaDaBrA
Сейчас нет на сайте
(вообще то не совсем курсач, но не суть-важно)
Собственно поставлена задача запилить приложение которое будет работать с одной из двух представленных на выбор СУБД - Postgre либо Мускул.
Пришла идея сделать простые шахматы на движке Unity с перспективой дальнейшего апгрейда в полноценное приложение для залива на ГП.
Оправдано ли будет использование Unity для этой цели? Прошу поделиться доками, статьями и видосами (можно на англ.) по данной теме, если ответ на предыдущий вопрос утвердительный.
Рабочий прототип приложения нужно подготовить не позже чем через 3 месяца. Он точно должен работать на винде. Должен работать с таблицами БД. Вопросы безопасности для прототипа скорее всего не так актуальны.
А вот дальнейший апгрейд приложения уже подразумевает и всевозможную защиту данных, улучшения, кросплатформенность(ооочень желательно как минимум веб и андроид) и прочее.


проект Mysterious Space. The losted moment
zaicev9797Дата: Четверг, 28 Июня 2018, 19:28 | Сообщение # 11 | Тема: ссылка на переменную в инспекторе (адрес/указатель)
AbRaKaDaBrA
Сейчас нет на сайте
чтобы использовать GUI надо сейчас сидеть вспоминать его все методы (за год службы благополучно все забывается и плюс когда начинали новый GUI вводить я только пощупать его успелл) . а чтобы отскейлить плейн по оси Х ничего вспоминать не надо :D
короче говоря в данный момент вермени для меня это было гораздо проще


проект Mysterious Space. The losted moment
zaicev9797Дата: Четверг, 28 Июня 2018, 17:14 | Сообщение # 12 | Тема: ссылка на переменную в инспекторе (адрес/указатель)
AbRaKaDaBrA
Сейчас нет на сайте
ну чтобы менять fillAmount мне бы всеравно пришлось бы мутить схему с рефлексией. Ну и никто не говорил что я вот прям узнал способ, и сразу пошел его юзать. Я лишь на заметку взял, что если вдруг мне придется насоздавать 100500 различных хелсбаров для 100500 разных переменных, то я таким методом воспользуюсь
а зачем я из плейнов собираю это все - вполне понятно тсановится из:
Цитата seaman ()
Зато OnGUI вызывается несколько раз за кадр...

Если мне придется делать что то более сложноое чем просто висящий сам по себе на экране бар, то я скорее всего это уже на UI буду делать.


проект Mysterious Space. The losted moment
zaicev9797Дата: Четверг, 28 Июня 2018, 15:54 | Сообщение # 13 | Тема: ссылка на переменную в инспекторе (адрес/указатель)
AbRaKaDaBrA
Сейчас нет на сайте
а я не через гуай, такие примитивные вещи можно и самому из плейнов собирать, как мне кажется вполне себе вариант. так что мне побарабану)
одна пустышка, один квад краем касается пустышки. В итоге если сохранить начальный скейл одной из осейи потом скейлить пустышку по этой оси, то нормльный бар получается.


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Четверг, 28 Июня 2018, 15:56
zaicev9797Дата: Четверг, 28 Июня 2018, 14:20 | Сообщение # 14 | Тема: ссылка на переменную в инспекторе (адрес/указатель)
AbRaKaDaBrA
Сейчас нет на сайте
ну и хелзбаров на экране единовременно не так уж много, так что не критично

проект Mysterious Space. The losted moment
zaicev9797Дата: Четверг, 28 Июня 2018, 14:19 | Сообщение # 15 | Тема: как в редакторе фокусить объекты с trail renderer и particl
AbRaKaDaBrA
Сейчас нет на сайте
ну в общем то оооочень похоже на костыль. ну да ладно, если иного решения нет, то и такое сойдет

проект Mysterious Space. The losted moment
zaicev9797Дата: Четверг, 28 Июня 2018, 13:34 | Сообщение # 16 | Тема: как в редакторе фокусить объекты с trail renderer и particl
AbRaKaDaBrA
Сейчас нет на сайте
ну в общем то я так и делаю сейчас, но прост таскать потом в рантайме ненужные пустые обьекты тоже как то не очнь весело.

Кстати еще в придачу вопрос про скорость перемещения камеры в редакторе. Ее какнибудь отредачить можно? медленнее сделать?


проект Mysterious Space. The losted moment
zaicev9797Дата: Четверг, 28 Июня 2018, 13:32 | Сообщение # 17 | Тема: ссылка на переменную в инспекторе (адрес/указатель)
AbRaKaDaBrA
Сейчас нет на сайте
да вроде не так уж и мудрено
Код
public int myVar = 42;

void OnGUI () {
if (GUILayout.Button("Output Variable Value")) {
int newVar = (int)this.GetType().GetField("myVar").GetValue(this);
Debug.Log("Variable value: " + newVar);
}
}


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Четверг, 28 Июня 2018, 13:32
zaicev9797Дата: Четверг, 28 Июня 2018, 11:58 | Сообщение # 18 | Тема: ссылка на переменную в инспекторе (адрес/указатель)
AbRaKaDaBrA
Сейчас нет на сайте
оооо, вот эт похоже на то что мне нужно, ушол курить

проект Mysterious Space. The losted moment
zaicev9797Дата: Четверг, 28 Июня 2018, 11:55 | Сообщение # 19 | Тема: ссылка на переменную в инспекторе (адрес/указатель)
AbRaKaDaBrA
Сейчас нет на сайте
если честно, просто с естетической точки зрения.
Просто кайфово же, когда просто передал значение по ссыллке, и не надо стопицот однотипных скриптов плодить, плюс еще в итоге меньше времени на компиляцию + меньший размер исходного файла. Все почучуть складывается и в итоге тогда проект больше походит на профессиональный продукт, нежели на школьную поделку и проще людей к совместной разработке привлечь.


проект Mysterious Space. The losted moment
zaicev9797Дата: Четверг, 28 Июня 2018, 11:20 | Сообщение # 20 | Тема: ссылка на переменную в инспекторе (адрес/указатель)
AbRaKaDaBrA
Сейчас нет на сайте
Предположим есть у меня какой то объект. Есть у него две переменных health и fuel и может потом я захочу к нему добавить еще shield.
И есть у меня два хелзбара для health и для fuel и потом я еще возможно захочу добавить бар для shield.
Мне очень лень писать практически один и тот же скрипт для каждого из хелзбаров, и менять там лишь только название переменной которую он берет из моего объекта.
Мне бы хотелось просто указывать в инспекторе адрес (ну типа как в плюсах к переменной можно либо по адресу либо по указателю добраться) или мб. имя переменной к которой конкретный хелзбар будет оращаться, т.к. в теории еще малоли для каких параметров кроме этих трех я захочу сделать бары, но алгоритм независимо от этого останется тем же.
Есть способ это сделать?


проект Mysterious Space. The losted moment
Форум игроделов » Записи участника » zaicev9797 [1032]
  • Страница 1 из 52
  • 1
  • 2
  • 3
  • 51
  • 52
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2019 Рейтинг