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)

is.SarCasm 22.06.2010 13:10

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

Цитата:

For k=1 To CountCollisions( b\sprite )
If GetEntityType( CollisionEntity( b\sprite,k ) )=TYPE_SCENERY
cx#=CollisionX( b\sprite,k )
cy#=CollisionY( b\sprite,k )
cz#=CollisionZ( b\sprite,k )
nx#=CollisionNX( b\sprite,k )
ny#=CollisionNY( b\sprite,k )
nz#=CollisionNZ( b\sprite,k )
th.Hole=New Hole
th\alpha=1
th\sprite=CopyEntity( hole_sprite )
PositionEntity th\sprite,cx,cy,cz
AlignToVector th\sprite,-nx,-ny,-nz,3
MoveEntity th\sprite,0,0,-.1
Exit
EndIf
Next

tormoz 22.06.2010 17:02

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

Сообщение от EaNub (Сообщение 150888)
А что за индекс столкновения?Писал разное туда, но всё равно выдавало:
Collision index out of range.

Количество столкновений за цикл может быть разное.
Индекс и указывает, какое именно столкновение тебе нужно

CountCollisions - возвращает количество столкновений
0 - столкновений нет
стоишь на земле - будет 1
касаешся стены - 2 (одно на землю, второе на стену) и тд.

Перебирай через фор все индексы

Код:

For i=1 to CountCollisions(entity)
If CollisionEntity( entity,i )
cy#=CollisionNY( entity,i)
If cy>0.01 or cy<-0.01
  игрок касается горизонтальной поверхности
EndIf
EndIf
Next


RlexGm 24.06.2010 09:11

Ответ: Вопрос-Ответ (для новичков)
 
А вот как сделать нормальное приседание, много видел обсуждении, типа создание игрока из двух пивотов.Так вот я много разных способов использовал, но нормально эти два пивота присоеденить друг к другу я не смог.На ровной поверхности всё нормально, а вот когда подходиш ...ну например к ящикам, нижняя часть сталкивается с ним, а верхняя спокойно проходит поверх ящика...

Zer0n 24.06.2010 09:27

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

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

Коли от первого лица, то посмотри урок по созданию квеста на Ксорсе от Hurrit. Там это описано! ;)

RlexGm 24.06.2010 09:53

Ответ: Вопрос-Ответ (для новичков)
 
Посмотрел, там только имитация приседания(камера вверх, вниз) а вот например если нужно залезть в какой нибудь узкий проход.
вообще бы не плохо сделать передвижение как в контре:-D

Mr_F_ 24.06.2010 15:26

Ответ: Вопрос-Ответ (для новичков)
 
ну сделай коллизию персу из двух эллипсойдов, нижнего и верхнего, опускай/убирай нижний вместе с анимкой приседания

RlexGm 24.06.2010 15:30

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

Сообщение от Mr_F_ (Сообщение 151263)
ну сделай коллизию персу из двух эллипсойдов, нижнего и верхнего, опускай/убирай нижний вместе с анимкой приседания

в этом и проблема, что я не могу скрепить нормально два эллипсойда, если парентить то при столкновении с низким объектом, например ящик, нижняя сталкивается, а верхняя проходит:mad:

Zer0n 24.06.2010 15:39

Ответ: Вопрос-Ответ (для новичков)
 
А если камера + ScaleEntity? Или у тебя через физику?

RlexGm 24.06.2010 16:39

Ответ: Вопрос-Ответ (для новичков)
 
нет, не через физику, у меня два пивота с радиусом + камера

RlexGm 25.06.2010 11:35

Ответ: Вопрос-Ответ (для новичков)
 
вообщем немного урежу свой вопрос, как свзяать два пивота с радиусов, так что бы например если 1 столкнулся, то и 2 останавливается и наоборот, если 2 столкнулся, то и 1 останавлвается.

Nex 25.06.2010 12:37

Ответ: Вопрос-Ответ (для новичков)
 
Наверно условием. Если нет столкновений, то парентить один пивот к другому - как то так. :)

RlexGm 26.06.2010 10:33

Ответ: Вопрос-Ответ (для новичков)
 
а может кто нибудь выложить пример с поста N6 http://forum.boolean.name/showthread... %E0%ED%E8%E5 от MoKa , а то тема трёхлетней давности, не хочу ее трогать:-D
Там ответ на мой вопрос...

RlexGm 27.06.2010 12:25

Ответ: Вопрос-Ответ (для новичков)
 
сори за повторное сообщение
Почему у меня может столкновение pvtpl1 равна 0, вот код:
Создаём:
Код:

Global Player=CreatePivot()
EntityType Player,TypePlayer
EntityRadius Player,80,300

Camera=CreateCamera()
CameraRange Camera,1,15000
EntityParent Camera,Player
MoveEntity Camera,0,150,0


Global pvtpl1=CreatezPivot()
EntityType pvtpl1,TypePlayer
EntityRadius pvtpl1,2,2



Global pvtpl2=CreatePivot()
EntityType pvtpl2,TypePlayer
EntityRadius pvtpl1,2,2

Код:

XplayerPl=EntityX(player)
YPlayerPl=EntityY(player)
ZplayerPl=EntityZ(Player)

Ypvtpl1=YPlayerPl-150
Ypvtpl2=YPlayerPl+150


PositionEntity pvtpl1,XplayerPl,Ypvtpl1,ZplayerPl
PositionEntity pvtpl2,XplayerPl,Ypvtpl2,ZplayerPl

как я и сказал выше, колизия с pvtpl1 постоянна равна нулю.Помогите плз

is.SarCasm 27.06.2010 13:05

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

RlexGm 27.06.2010 17:32

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

Сообщение от Igorian (Сообщение 151647)
Пивоты не колизятся

Да ты что?Правда что ли?Что же тогда player колизится?Пивоты с радиусом колизятся


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

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