|
3D-программирование Вопросы, касающиеся программирования 3D мира |
28.08.2008, 04:37
|
#1
|
AnyKey`щик
Регистрация: 03.07.2008
Сообщений: 9
Написано 0 полезных сообщений (для 0 пользователей)
|
Несколько вопросов
В процессе изучение блица возник ряд вопросов.
Собственно:
1.У меня в игре есть частицы.Создаются они таким образом:
Function CreateSpark1.TSpark(x#,y#,z#,n)
For i=1 To n ;кол-во частиц
s1.TSpark= new TSpark
.....
Return s1
next
End Function
Function CreateSpark2.TSpark(x#,y#,z#,n)
For i=1 to n
s2.TSpark= new TSpark
.....
Return s2
next
End Function
А обновляются в главном цикле так:
For s1.TSpark = each TSpark
UpdateSpark1(s1) ; ф-я изменяющая местоположение частиц
Next
For s2.TSpark = each TSpark
UpdateSpark2(s2)
Next
Мне представлялось, что каждый тип частиц будет двигаться так, как задано в его (типе) функции апдейта.Но на практике траектория частицы получается смесью всех функций апдейта. То есть все частицы всех типов летят одинаково и по какой-то дурцкой траектории.
Подскажите как правильно написать структуру создания и обновления частиц, чтобы каждый тип частиц имел уникальную траекторию.
2.Каким образом можно создать сетку для трехмерного игрового поля(террэин), пусть и плоского.В 2д сетке, ячейками являются изображения или ректанглы.А чем будут являтся ячейки в сетке для 3д поля?
3.На каком-то форуме нашел код:
type Thing
field name$
field Type
field g.Gun, p.Pistol
end Type
type Gun
field Power#, Freq#
end Type
Type Pistol
field Power#, TypePula
end type
Захотел применить его для своего инвентаря.
По моим представления этот код написан чтобы,например,у g.Gun, был параметр name$, у p.Pistol был параметр name$ и т.п. То есть чтобы у нескольких типов были общие параметры.Если это не так, то возможно ли сделать так как я представил это себе и как.
И как ссылаться на такой тип.
Буду признателен, если рассеете мои заблуждения.
Последний раз редактировалось Machete, 28.08.2008 в 11:04.
|
(Offline)
|
|
28.08.2008, 04:47
|
#2
|
Бывалый
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений (для 267 пользователей)
|
Ответ: Несколько вопросов
1. Проще всего два разных типа сделать.
Сообщение от Machete
А чем будут являтся ячейки в сетке для 3д поля?
|
Чем угодно. Да хоть шестиугольниками, если нравится.
3. Ну ты всё правильно понимаешь.
|
(Offline)
|
|
28.08.2008, 10:00
|
#3
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Несколько вопросов
1. У афтора и есть 2 разных типа
Лично моё имхо
Я делал чяастицы так
У меня 1 всего тип
И есть параметры массы, вектор скорости, время жизни и т.п. Оперируя этими параметрами можно получить пыль, искры, светлячки и много чего ещё. Лучше делать побольше параметров чтобы можно было настроить поведение частиц, а на все типы частиц всё равно типов не напасёсся (максимум 5 типов сделаешь потом задолбает)
В коде не фкуриваю как у тебя функция типа spark возвращает объект типа TSpark, это имхо работать не будет, да ещё у тебя две функции CreateSpark продекларированы, сч одинаковым именем. Проверь, ты правильно сюда код скопировал?
Function CreateSpark.spark(x#,y#,z#,n)
For i=1 to n
s2.TSpark= new TSpark
.....
Return s2
next
End Function
2. ИМХО квадраты состоящие из 2 полигонов
Хотя может я не совсем понял шо те надо.
3. Вообще делается класс Item, от него наследуются классы Weapon, Medkit,Eqip от Weapon наследуются Meele и Distance, от Distance наследуются Pistol, Gun, AutomatKalashnikova и всем трём задаются свои дополнительные переменные и свойства. Но это увы только там где есть ООП. В блитзе я бы сделал один тип Thing и прямо в ём бы и писал все параметры которые понадобятся как пистолету, так и ружью, плюс к этому - тип оружия, 0 - пистолет 1 - ружжё. В обоих случяаях будет юзаццо филд Power#, но в случае с пистолетом будет ещё юзацо филд TypePula а Freq# будет просто болтаться без дела, а если это ружьё, то наоборот. И обрабатывать естественнов зависимости от типа оружия.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
28.08.2008, 11:08
|
#4
|
AnyKey`щик
Регистрация: 03.07.2008
Сообщений: 9
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Несколько вопросов
1.На самом деле у меня тоже один тип ( spark - TSpark - опечатка, исправил).Название ф-ий тоже разное и тоже исправил.
Так как же мне аптейтить какждую переменнуя типа (s1.TSpark,s2.TSpark) чтобы не затрагивать другие?По идеи надо где-то писать First.
Поделитесь примером.
2.Понял
3.А я думал блиц объектно ориентированный язык :O.
Я еще слышал понятие - вложенные типы, это тоже самое?
|
(Offline)
|
|
28.08.2008, 11:14
|
#5
|
Бывалый
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений (для 267 пользователей)
|
Ответ: Несколько вопросов
3. Нет, блитц не имеет ООП. За ООП смотри в сторону BlitzMax и Blitz3D SDK.
А еще вот сюда загляни: http://forum.boolean.name/showthread.php?t=1194
Последний раз редактировалось MiXaeL, 28.08.2008 в 11:26.
|
(Offline)
|
|
28.08.2008, 14:17
|
#6
|
ПроЭктировщик
Регистрация: 02.03.2007
Сообщений: 194
Написано 65 полезных сообщений (для 168 пользователей)
|
Ответ: Несколько вопросов
Сообщение от Machete
Каким образом можно создать сетку для трехмерного игрового поля(террэин), пусть и плоского.В 2д сетке, ячейками являются изображения или ректанглы.
|
Повесить сетку на террейн?
грузи тексу, буферизируй, малюй сетку, "размножь":
tertex=loadtexture("t.jpg") ;256x256
BackBuffer(tertex)
color 0,0,255
line 1,256,256,256
line 256,1,256,256
SetBuffer BackBuffer()
scaletexture tertex,10,10
entitytexture terrain,tertex
__________________
— Скажи мне, что это не бомба.
— Хорошо. Это котенок. Замечательный взрывной котенок.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.08.2008, 18:20
|
#7
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Несколько вопросов
Сообщение от ABTOMAT
1. У афтора и есть 2 разных типа
И есть параметры массы, вектор скорости, время жизни и т.п.
|
по группам:
1. движение: скорость, ускорение, угловая скорость, угловое ускорение;
2. внешний вид: текстура, цвет, альфа, размер (он же масштаб, можно раздельный по X и Y);
3. время жизни: несколько стадий (у меня три). между ними все числовые значения интерполируются.
Сообщение от ABTOMAT
В обоих случяаях будет юзаццо филд Power#, но в случае с пистолетом будет ещё юзацо филд TypePula а Freq# будет просто болтаться без дела, а если это ружьё, то наоборот.
|
а можно сделать что freq, вернее ROF(rate of fire) будет отвечать за скорострельность, у неавтоматического оружия просто будет равен 0.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:57.
|