forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Вопрос-Ответ (для новичков) (http://forum.boolean.name/showthread.php?t=7886)

Reizel 29.01.2010 16:14

Ответ: Вопрос-Ответ (для новичков)
 
мм предложу свой вариант... Конечно драть будет больше чем спрайт, но тем не менее

1) Создаем цилиндр.
2) Перекрашиваем его вертексы следующим образом: у ствола пушкм потемнее, а на конце луча - посветлее (VertexColor в помощь)
3) Пикаем линией в направленнии пушки
4) Узнаем координаты дула, и тыкнутые координаты
5) Позиционируем цилинлр в координаты между дулом и пушкой
6) Поворачиваем цилиндр по векторам (VectorPitch and VectorYaw)
7) Скалим цилиндр, ставим альфу от .3 до .7)
8) пишем тип АльфаЕнтити, в котором есть поля Entity and Alpha#
9) Делаем функцию обновления элементов типа AlphaEntity
Это чтоб можно было бы какой либо обэкт плавно убрать со сцены, в данном случае луч лазера

FireOwl 29.01.2010 18:53

Ответ: Вопрос-Ответ (для новичков)
 
А почему нельзя просто создать крестообразный "брус" при помощи CreateSurface, припарентить его к пушке и показывать/прятать при надобности?
Вертексы конца луча можно спокойно ставить в координаты попадания (CameraPick как и было предложено) и красить в какие заблагорассудится цвета (VertexColor).
А чтобы сюрфейсы было видно с двух сторон:
Цитата:

EntityFX entity, 16
Возни меньше чем со спрайтами и цилиндрами, имхо.

is.SarCasm 30.01.2010 00:09

Ответ: Вопрос-Ответ (для новичков)
 
блин опять что то с колизиями. То они работают, то нет.

Цитата:

Graphics3D 1280,1024,32,2
SetBuffer BackBuffer()

; collisions
Const zem=1,tnk=2 ,snr=3
; graviti
Global graviti = -0.98




zemla = CreatePlane()
PositionEntity zemla,0,-30,0
EntityType zemla,zem



Include "TankInfo.bb"
Global cam
cam = CreateCamera()



Type PlayerTank
Field Entity
Field speed#
Field bulletDamage#
Field Damage#
Field Gamep#
Field benzin
Field snrd
Field bull
End Type




CreatePlayerTank(6)

Collisions zem,tnk,2,2
Repeat
UpdatePlayerTank()
RenderWorld
UpdateWorld

Flip(1)
Until KeyHit(1)

End


























Function CreatePlayerTank(tank)
p.PlayerTank = New PlayerTank
p\Entity =CreateCube()
p\speed# = speed#(tank)
p\bulletDamage# = bulletDamage#(tank)
p\Damage# = damage#(tank)
p\gamep# = gamep(tank)
p\benzin = benzin(tank)
p\snrd = snrd(tank)
p\bull = bull(tank)
RotateEntity p\entity,270,0,0
EntityType p\entity,tnk
EntityColor p\entity,255,0,0
End Function



Function UpdatePlayerTank()
For p.PlayerTank = Each PlayerTank
If KeyDown(17) MoveEntity p\entity,0,-p\speed#,0
If KeyDown(31) MoveEntity p\entity,0,(p\speed#/4),0
If KeyDown (30) TurnEntity p\entity,0,0,-p\gamep#
If KeyDown (32) TurnEntity p\entity,0,0,p\gamep#
PositionEntity cam,EntityX(p\entity),EntityY(p\entity)+5,EntityZ( p\entity)-7
TranslateEntity p\entity,0,graviti,0
Next
End Function

is.SarCasm 30.01.2010 09:42

Ответ: Вопрос-Ответ (для новичков)
 
В чем проблэм? Я ж сравнивал с примерами... Я сначала задал константы типов:
Цитата:

Const zem=1,tnk=2 ,snr=3
затем создал обьекты и дал им типы:
Цитата:

zemla = CreatePlane()
PositionEntity zemla,0,-30,0
EntityType zemla,zem


p.PlayerTank = New PlayerTank
p\Entity =CreateCube()
EntityType p\entity,tnk
ну и колизии:
Цитата:

Collisions zem,tnk,2,2

Reizel 30.01.2010 14:43

Ответ: Вопрос-Ответ (для новичков)
 
ЭЛЛИПСОИД - ПОЛИГОН, а у тебя zem соллизится с tnk! надо наоборот!

is.SarCasm 30.01.2010 15:17

Ответ: Вопрос-Ответ (для новичков)
 
не знал... спс буду знать. (а я то думаю че то работает то не работает :) )

is.SarCasm 31.01.2010 09:54

Ответ: Вопрос-Ответ (для новичков)
 
Можно примерчик роботы с банками? Как и где их применяют?

Reizel 31.01.2010 10:11

Ответ: Вопрос-Ответ (для новичков)
 
Их применяют для закатывания огурцов

Reks888 31.01.2010 11:04

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от Павел (Сообщение 135448)
Их применяют для закатывания огурцов

А в массивы огурцы не закатывают, поэтому скорость доступа к ним выше => юзай массивы:-D
ЗЫ игорь, я зашел в сеть всего на 30 минут позже тебя, а тебя уже нет. >>:(

Nex 31.01.2010 13:14

Ответ: Вопрос-Ответ (для новичков)
 
Как проверять массив на наличие трех и выше в подряд идущих картинок? :)

Reizel 31.01.2010 13:50

Ответ: Вопрос-Ответ (для новичков)
 
если массив не забит всякой хренью, то:
for K=0 to ArrayCount
if Array(K)<>0 then
;Здесь картинка?
endif
next

Nex 01.02.2010 03:59

Ответ: Вопрос-Ответ (для новичков)
 
Павел, я твой код не стал проверять ибо мне кажется он не будет работать потому что я не много не правильно вопрос написал.
У меня в массиве числа от 1 до 5 и по этим цифрам рисуется карта и вот мне надо проверить массив и так сказать найти 3 и выше одинаковых цифры идущих в ширину или в высоту так сказать с любой позиции массива (сначала, из середины, в конце), но как это сделать я не знаю ибо с массивами пока что плохо дружу...

ABTOMAT 01.02.2010 04:33

Ответ: Вопрос-Ответ (для новичков)
 
Скорость доступа к массивам выше, зато банки целиком передавать быстрее
Цитата:

Как проверять массив на наличие трех и выше в подряд идущих картинок? :)
Проверять каждую ячейку: если в ячейках с координатами + и - 1 такая же картинка, то БИНГО! нет - переходим дальше.
Так же со строками, можно и по диагонали.

Nex 01.02.2010 07:26

Ответ: Вопрос-Ответ (для новичков)
 
А можно кодом? Выше я написал, что с массивами плохо дружу, а иначе сам бы уже догадался... :(

Blender 01.02.2010 20:57

Ответ: Вопрос-Ответ (для новичков)
 
Вот функция :
Код:

Function CreateWorld(level#)
        light=CreateLight()
        plane=CreatePlane()
        map=LoadMesh(level#)
End Function

В лупе пишу CreateWorld("jumpcity.3ds")

Плейн я вижу, карту - нет...если писать на прямую без функции то все ок....
В чем трабла?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot