Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 11.10.2010, 18:50   #1051
KOPCAP
AnyKey`щик
 
Регистрация: 26.05.2009
Сообщений: 15
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Значит не робит? Я просто понадеялся на ваш опыт))) не проверял, к квадрату я цеплял колизию по углам, напихал на них пивот и настроил чтоб пивоты постоянно на углах держались... ух намучался с этим быдлокодом, но по другому пока не умею...
(Offline)
 
Ответить с цитированием
Старый 12.10.2010, 07:23   #1052
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Вопрос-Ответ (для новичков)

квад - это не квадрат. Это плоскость состоящая из двух треугольников
Function CreateQuad (tex$,flag%=1)
     quad = CreateMesh()
           b = LoadBrush (tex,flag)
           s = CreateSurface (quad,b)
	v0 = AddVertex (s,-4,0,4,0,0)
	v1 = AddVertex (s,4,0,4,1,0)
	v2 = AddVertex (s,4,0,-4,1,1)
	v3 = AddVertex (s,-4,0,-4,0,1)
                AddTriangle (s,v0,v1,v2)
                AddTriangle (s,v0,v2,v3)
	Return quad
End Function
(Offline)
 
Ответить с цитированием
Старый 13.10.2010, 15:47   #1053
KOPCAP
AnyKey`щик
 
Регистрация: 26.05.2009
Сообщений: 15
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Хм.. ясно, слушай я не разобрался с EntityBox указываю параметры куба, а в итоге получаю сферу с радиусом 1 =( вот код создания энтити:
Function new_car(mes$, speed#, startx#, startz#, startangle, rk#, acs#)
  Local cx.car
  cx = New car
  cx\mesh=LoadMesh(mes)
  cx\spd=speed
  cx\angle=startangle
  cx\kofang=rk
  cx\acselerate=acs
  cx\cspd=0
  MoveEntity cx\mesh, startx,0,startz
  ScaleEntity cx\mesh, .2,.2,.2
  EntityColor cx\mesh, Rnd(1,255),Rnd(1,255),Rnd(1,255)
  RotateEntity cx\mesh, 0, startangle, 0
  EntityType cx\mesh, CAR_COL
  EntityBox cx\mesh, -1,0,2,4,2,3
End Function
(Offline)
 
Ответить с цитированием
Старый 14.10.2010, 23:42   #1054
Kudesnic
Нуждающийся
 
Аватар для Kudesnic
 
Регистрация: 27.08.2010
Адрес: Лен. область
Сообщений: 58
Написано 21 полезных сообщений
(для 50 пользователей)
Ответ: Вопрос-Ответ (для новичков)

ну координатный метод подойдет =) if EntityX(player) > EntityX(box)+widthbox/2 And ... и так далее где player игрок, box - область, widthbox соответсвенно ширина коробки, потом еще 5 проверок и все.
Это конечно, если бокс не повернут..
Именно таким способом воспользовался.Спасибо
Бокс может быть повернут, но тогда игрока к нему нужно "привязывать", на время вычисления
(Offline)
 
Ответить с цитированием
Старый 15.10.2010, 05:13   #1055
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Вопрос-Ответ (для новичков)

киньте кто нить пример с контурированием обьектов...
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Старый 15.10.2010, 16:25   #1056
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Сообщение от Colossus Посмотреть сообщение
киньте кто нить пример с контурированием обьектов...
Function Cel_Shade(Shaded_EntityOutlineScale#=0.025, r#=0, g#=0, b#=0)
    
Local Outline_Entity CopyMesh(Shaded_Entity)         
    
UpdateNormals(Outline_Entity
    
EntityFX(Outline_Entity1+8)
    
    
    
Local i
    
For 1 To CountSurfaces(Outline_Entity)
        
        
Local surf GetSurface(Outline_Entityi)
        
Local j
        
        
For 0 To CountVertices(surf) - 1
            Local Vx
#  = VertexX#(surf, j)
            
Local Vy#  = VertexY#(surf, j)
            
Local Vz#  = VertexZ#(surf, j)
            
Local VNx# = VertexNX#(surf, j)
            
Local VNy# = VertexNY#(surf, j)
            
Local VNz# = VertexNZ#(surf, j)
            
VertexCoords (surfjVx#+(VNx#*OutlineScale#), Vy#+(VNy#*OutlineScale#), Vz#+(VNz#*OutlineScale#))
        
Next
        
    Next
    
    FlipMesh Outline_Entity
    EntityColor Outline_Entity
rgb
    PositionEntity Outline_Entity
EntityX#(Shaded_Entity, True), EntityY#(Shaded_Entity, True), EntityZ#(Shaded_Entity, True)
    
EntityParent Outline_EntityShaded_Entity
End 
Function 
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Program23 (15.10.2010), St_AnGer (16.10.2010)
Старый 16.10.2010, 15:58   #1057
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Randomize, еще желательно добавить.
RotateEntity Outline_Entity,EntityPitch (Shaded_Entity, True),EntityYaw (Shaded_Entity, True),EntityRoll (Shaded_Entity, True)
(Offline)
 
Ответить с цитированием
Старый 23.10.2010, 06:39   #1058
KOPCAP
AnyKey`щик
 
Регистрация: 26.05.2009
Сообщений: 15
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Народ, у меня проблема с рандомом, короче вот код:
в офтопе, по тому что большой..
Graphics3D 800,600,16, 1
SetBuffer BackBuffer()

MoveMouse GraphicsWidth()/2, GraphicsHeight()/2
camera=CreateCamera()
CameraViewport camera,0,0,800,600
MoveEntity camera, 0, 10,-10
TurnEntity camera, 50,0,0
light=CreateLight()
RotateEntity light, 23,127,98
plane=CreatePlane()
cur=LoadImage("cursor.png")

Global unid#=1

Type unit
	Field tip$, team, dmg, range, mesh, state, oldx#, oldz#, speed#, rel#, rx#, rz#, sel, id
End Type
; type of insect, team of ins., damage of ins., model of ins., state(0=stay, 1=run, 2=attack, 3=death),
; last position of ins(x,z), reload speed, real position of ins(x,z), select of unit 0/1
Type mur
  Field team, tip, mesh, dmg, rel#, range, sel, id
End Type

Function make_mur(x#, z#, ty, te, id)
  m.mur = New mur
  m\team=te
  m\id=id
  If (ty=1) Then
    m\mesh=LoadMesh("mur_01.3ds")
    PositionEntity m\mesh, x,0,z
    m\dmg=10
    m\range=7
    m\rel=0.5
  EndIf
  If (te=1) Then
    EntityColor m\mesh, 255,0,0
  EndIf
End Function

Function make_unit(x#, z#, te, ty, tx#, tz#, id)
  unid=unid+1
  un.unit = New unit
  un\tip=ty
  un\id=id
  un\team=te
  un\mesh=CreateCube()
  PositionEntity un\mesh, x, 0, z
  un\oldx=x
  un\oldz=z
  un\rx=tx
  un\rz=tz
  If(ty=1) Then
    ScaleEntity un\mesh, 1,0.5,0.25
    un\dmg=2
    un\range=3
    un\speed=0.2
    un\rel=0.5
  EndIf
  If(te=1) Then
    EntityColor un\mesh, 255,0,0
  EndIf
  If x<>tx Or z<>tz Then
  un\state=1
  Else
  un\state=0
  EndIf
End Function

Function move_unit()
  For un.unit = Each unit
    pivot=CreatePivot()
    MoveEntity pivot, un\rx,0,un\rz
    If (EntityDistance(un\mesh, pivot)>1) Then
       If (un\rx-un\oldx)<0 Then
         ang=180
       Else
         ang=0
       EndIf
       sn#=un\rz-un\oldz
       cn#=un\rx-un\oldx
       RotateEntity un\mesh, EntityPitch(un\mesh),ATan(sn/cn)+ang,EntityRoll(un\mesh)
       MoveEntity un\mesh, un\speed, 0,0 
       un\oldx=EntityX(un\mesh)
       un\oldz=EntityZ(un\mesh)
    Else 
      un\oldx=un\rx
      un\oldz=un\rz
      un\state=0
    EndIf
    FreeEntity pivot
  Next
End Function

Function produse_unit(id, ty)
  For m.mur = Each mur
    If (m\id=id) Then
      make_unit(EntityX(m\mesh),EntityZ(m\mesh), m\team, ty, EntityX(m\mesh)-5, EntityZ(m\mesh), unid)
    EndIf
  Next
End Function

While Not KeyHit(1)

SeedRnd MilliSecs()

If (MouseX()<5) Then
  MoveEntity camera, -0.2,0,0
  MoveMouse 4, MouseY() 
EndIf

If (MouseX()>GraphicsWidth()-5) Then
  MoveEntity camera, 0.2,0,0
  MoveMouse GraphicsWidth()-4, MouseY() 
EndIf

If (MouseY()<5) Then
  PositionEntity camera, EntityX(camera),EntityY(camera),EntityZ(camera)+0.2
  MoveMouse MouseX(), 4
EndIf

If (MouseY()>GraphicsHeight()-5) Then
  PositionEntity camera, EntityX(camera),EntityY(camera),EntityZ(camera)-0.2
  MoveMouse MouseX(), GraphicsHeight()-4
EndIf

If KeyDown(17) Then
  PositionEntity camera, EntityX(camera),EntityY(camera),EntityZ(camera)+0.1
EndIf

If KeyDown(30) Then
  MoveEntity camera, -0.1,0,0
EndIf

If KeyDown(31) Then
  PositionEntity camera, EntityX(camera),EntityY(camera),EntityZ(camera)-0.1
EndIf

If KeyDown(32) Then
  MoveEntity camera, 0.1,0,0
EndIf

If KeyHit(18) Then
  make_mur(0,0,1,1,1)
EndIf

If KeyHit(16) Then
  produse_unit(1,1)
EndIf

move_unit()

For un.unit = Each unit
 If(Rnd(1,1000)<=2)  And (un\state=0) Then
  If un\state=0 Then
   un\rx=un\oldx+Rnd(-5,5)
   un\rz=un\oldx+Rnd(-5,5)
   If (un\rx+un\rz)*(un\rx*un\rz)<>0 Then
    un\state=1
   EndIf
  EndIf
 EndIf
Next

For un.unit = Each unit
  For un2.unit= Each unit
    If EntityDistance(un\mesh, un2\mesh)<1 And un\id<>un2\id And un\state=0 Then
      un\rx=un\oldx+Rnd(-2,2)
      un\rz=un\oldx+Rnd(-2,2)
      un\state=1
    EndIf
  Next
  For m.mur = Each mur
    If EntityDistance(un\mesh, m\mesh)<2 And un\state=0 Then
      un\rx=un\oldx+Rnd(-5,5)
      un\rz=un\oldx+Rnd(-5,5)
      un\state=1
    EndIf
  Next
Next

Cls
UpdateWorld
RenderWorld
DrawImage cur,MouseX(),MouseY()
Flip
Wend
End

В чем вообще суть, пока что есть немного, нужно нажать "У" , создастся новый типа муравейник, нажать "Й" из него выйдет юнит. Если юниты слижком близко друг к другу то передвигаться в в рандомную точку области 4х4 с центром где находится юнит, короче юнит в центре этой области. суть в чем, когда я закликиваю "й" то юниты толкаются, стараются распредилиться равномрно, только вот распределяются они почему-то по линии ну примерно по линии под 45 градусов, линия проходит через 0,0 на координатной плоскости, подскажите в че тут казус? или альтернативный спосо выбора рандомного направления...
Заранее извиняюсь за быдлокод))) т.к. в Блитце сравнительно недавно...
(Offline)
 
Ответить с цитированием
Старый 23.10.2010, 14:38   #1059
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Вопрос-Ответ (для новичков)

un\rx=un\oldX+Rnd(-5,5)
un\rz=un\oldX+Rnd(-5,5)
на rz стоит тоже oldX
верно будет так
un\rx=un\oldX+Rnd(-5,5)
un\rz=un\oldZ+Rnd(-5,5)
SeedRnd (MilliSecs()) тоже пригодится
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KOPCAP (25.10.2010)
Старый 25.10.2010, 11:33   #1060
KOPCAP
AnyKey`щик
 
Регистрация: 26.05.2009
Сообщений: 15
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Спасибо) при копировании видать поменять забыл.. Теперь все работает. Да,SeedRnd (MilliSecs()) ставил, результат один и тотже, оставлю так...
(Offline)
 
Ответить с цитированием
Старый 25.10.2010, 20:35   #1061
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Рандомиз, а если перевести код в Ксорс то ругается на строчку

For j = 0 To xCountVertices(surf) - 1
МаВом ругается...
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Старый 25.10.2010, 21:25   #1062
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Вопрос-Ответ (для новичков)

Сообщение от Colossus Посмотреть сообщение
Рандомиз, а если перевести код в Ксорс то ругается на строчку

For j = 0 To xCountVertices(surf) - 1
МаВом ругается...
Найт выражает то, что думает о тебе через ксорс!
Ну и правильно, я бы тоже тебя послал вот за это:
For i = 1 To xCountSurfaces(Outline_Entity) ??
Ты передаешь в функцию xCountVertices несуществующий сюрфейс!
В ксорсе все порядковые номера начинаются не с 1цы, как в б3д - а с 0.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Старый 25.10.2010, 22:37   #1063
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Вопрос-Ответ (для новичков)

спасибо доктор, мне уже полегчало
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Старый 27.10.2010, 23:38   #1064
DeeJex
Разработчик
 
Аватар для DeeJex
 
Регистрация: 24.02.2010
Адрес: Новороссийск
Сообщений: 485
Написано 112 полезных сообщений
(для 329 пользователей)
Ответ: Вопрос-Ответ (для новичков)

У меня такая проблема: гружу аним меш, ставлю ему EntityOrder -1, ничего не происходит, ставлю его чилдам рекурсивно это значение:
Function EntityOrderCh(ent,ord)
EntityOrder ent,ord
For i = 1 To CountChildren(ent)
tmp_ch = GetChild(ent,i)
EntityOrder tmp_ch,ord
If CountChildren(tmp_ch) Then EntityOrderCh tmp_ch,ord
Next
End Function
Но вот в чем проблема: чилды не пересекаются друг с другом, они тупо перекрывают друг друга. Что делать?
upd
Мда, в справке написано, что у кого order<>0, у того не работает z-буфферизация... мб есть какой-то выход?
upd2
Решил проблему вот как: разделил интити на слои, которые рендерятся по очереди (да, немного теряется производительность, но других вариантов нет)
Type TIOrder
Field ent,layer
Field hided
End Type

Function IOM(entity,layer=0) ;Запоминает интити
IOrder.TIOrder = New TIOrder
IOrder\ent = entity : IOrder\layer = layer
End Function

Function RenderWorldZ()
For IOrder.TIOrder = Each TIOrder
	IOrder\hided = BB_EntityHidden(IOrder\ent) ;ACHTUNG! Требуется библиотека blitz3d.dll, выкладывать не буду, ищите на 3dcom.3dn.ru
Next
For i = 0 To 1
For IOrder.TIOrder = Each TIOrder
	If IOrder\layer<>i Then HideEntity IOrder\ent
	If IOrder\layer=i And IOrder\hided=0 Then ShowEntity IOrder\ent
Next
RenderWorld
Next

For IOrder.TIOrder = Each TIOrder
If IOrder\hided = 1 Then HideEntity IOrder\ent Else ShowEntity IOrder\ent
Next

End Function
__________________
299 792 458

Последний раз редактировалось DeeJex, 28.10.2010 в 00:51.
(Offline)
 
Ответить с цитированием
Старый 28.10.2010, 17:57   #1065
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Плохо Ответ: Вопрос-Ответ (для новичков)

Создал для врагов и пулей - типы с фиелдом для мешей
Type EnemyType
Field Model
End Type

Type ShotsType
Field Model
End Type 
For i=1 To 2
Enemy.EnemyType=New EnemyType
Enemy\Model=CreateCube()
Next

Создал врагов и пули (при стрельбе)
Настроил Collisions-ы: SolidEnemy и т.п.

; -код проги-
; **************

For Shot.ShotsType=Each ShotsType
If EntityCollided(Shot\Model,SolidEnemy)
FreeEntity EntityCollided(Shot\Model,SolidEnemy) ; - удаляет модель врага с которой столкнулась пуля... отсюда вопрос
; так же ошибка выходит при привязке TempCollidedEnt=EntityCollided(Shot\Model,SolidEne my) - пробел ошибка форума
; а это помогло бы, например для: FreeEntity TempCollidedEnt
EndIf
Next

Вопрос:
В том месте удаляется модель (Enemy\Model), а как удалить тот Enemy, чья эта модель..
Знаю, что - Delete Enemy
Но как у модели EntityCollided(Shot\Model,SolidEnemy) определить прикрепляемый тип?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста дайте ответ на несколько вопросов Kuzma 3D-программирование 8 06.10.2009 19:38
Предложение к теме "вопрос-ответ" jimon Наш форум 1 27.02.2009 19:26
Мой ответ Жеке! alcosholik Болтовня 5 19.11.2005 16:41


Часовой пояс GMT +4, время: 03:59.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com