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)

Dream 02.07.2010 12:45

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

CollisionN*
вроде как возращает нормально с столкнувшейся плоскостью. если CollisionNY=-1 это значит что плоскость направлена вниз, тоесть игрок скорее всего стукнулся в неё головой.

Kolobok 02.07.2010 16:37

Ответ: Вопрос-Ответ (для новичков)
 
Я написал код, в котором один объект привязывается к другому и третий к другому... Но если я буду изменять размеры ScaleEntity, то изменяются размеры всех объектов привязанных к объекту, вместо самого объекта...

А как изменить размеры Player`a "нормально"?
Помогите плиз :) Вот код:
Код:

Graphics3D 640, 480, 32, 2
SetBuffer BackBuffer()

Const TypePlayer=1,TypeWall=2

light = CreateLight()
TurnEntity light,45,60,0

wall = CreateCube()
PositionEntity wall, 0, 0, 5
EntityColor wall,255,0,0
EntityType wall,TypeWall

player = CreateCube()
EntityColor player,0,255,0
EntityType player,TypePlayer
ScaleEntity player,2,1,1

sph = CreateSphere(8, player)
PositionEntity sph,0,1,0
EntityColor sph,0,100,0

cam = CreateCamera(sph)
PositionEntity cam,0,2,-7

Collisions TypePlayer,TypeWall,2,3

Repeat

        If KeyDown(17) MoveEntity player,0,0,.1
        If KeyDown(30) TurnEntity player,0,2,0
        If KeyDown(31) MoveEntity player,0,0,-.1
        If KeyDown(32) TurnEntity player,0,-2,0

UpdateWorld
RenderWorld

Flip

Until KeyHit(1)
End


is.SarCasm 02.07.2010 16:53

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

Reks888 02.07.2010 17:01

Ответ: Вопрос-Ответ (для новичков)
 
И в следующий раз хотя бы компилируй код перед тем как ложить его на форум:
Цитата:

sph = CreateSphere(8, player)
PositionEntity shp,0,1,0
Намекает на то что ты и не пытался его исправить, а просто выложил на форум чтобы кто-то за тебя сделал

tormoz 02.07.2010 17:28

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

Сообщение от EaNub (Сообщение 152485)
не помогло:(

А что ваще должно происходить ?
ИМХО ты недопонимаешь логики
Если у тебя гравити - это флаг запрета прыжка, то ты непрально ваще логику построил
надо как-то так:

Код:

Gravity=1; Запрещаем прыжок

For i=1 To CountCollisions(player)
If CollisionEntity( player,i )
cy#=CollisionNY( player,i)
If cy#>0
Gravity=0; Контакт с полом есть, разрешаем прыжок
EndIf
EndIf
Next


Kolobok 02.07.2010 17:55

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

Сообщение от Reks888 (Сообщение 152509)
И в следующий раз хотя бы компилируй код перед тем как ложить его на форум:
Намекает на то что ты и не пытался его исправить, а просто выложил на форум чтобы кто-то за тебя сделал

Это я когда сюда выкладывал уменьшал код и увидел что написал переменную shp (shape) вместо sph (sphere). Вот и пытался исправить...
Могу весь код для доказательства выложить :)

Igorian, А как привязывать, отвязывать объекты? Я в этом новичок :(

St_AnGer 02.07.2010 18:05

Ответ: Вопрос-Ответ (для новичков)
 
EntityParent entity, parent на сколько я помню позволяет привязывать и отвязывать объекты. Читай справку по команде, Kolobok

ЗЫ: есть ещё вроде бы команда ParentEntity, помоему позволяет узнать родителя определённого объекта.

RlexGm 02.07.2010 18:49

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

Сообщение от tormoz (Сообщение 152514)
А что ваще должно происходить ?
ИМХО ты недопонимаешь логики
Если у тебя гравити - это флаг запрета прыжка, то ты непрально ваще логику построил
надо как-то так:

Код:

Gravity=1; Запрещаем прыжок

For i=1 To CountCollisions(player)
If CollisionEntity( player,i )
cy#=CollisionNY( player,i)
If cy#>0
Gravity=0; Контакт с полом есть, разрешаем прыжок
EndIf
EndIf
Next


впринцепи то всё то, но у меня не только нужно разрешить прыжок, дело в том что у меня гравитация с ускорением и поэтому переменая которая вписывается в TranslateEntity при Gravity=0 равна 0, нужно чтобы при прыжке срабатывала гравитация,а при
If cy#<=0 Or CountCollisions(player)=False
Gravity=1
EndIf
или при использовании Else гравитация включается только когда достигаешь потолка

tormoz 02.07.2010 19:08

Ответ: Вопрос-Ответ (для новичков)
 
Неправильная логика
гравитация должна действовать постоянно, а вот прыжок разрешать только когда стоишь на полу

RlexGm 02.07.2010 19:19

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

Сообщение от tormoz (Сообщение 152532)
Неправильная логика
гравитация должна действовать постоянно, а вот прыжок разрешать только когда стоишь на полу

Даже если так, но если условие не выполняется, то Gravity должно возращать 1 иначе например наступил на что нибудь горизонтальное и начал куда нибудь падать... нажал пробел(или что то еще) и невероятно подлетел вверх.:)

Dream 02.07.2010 19:43

Ответ: Вопрос-Ответ (для новичков)
 
ещё раз, если CollisionNY<=0значит или плоскость вертикальная, или она развернута вниз головой, тоесть находится над игроком. в этом случае гравитация должна работать.
Лучшый вариан- держать переменную для ускорения от гравитации, и если CollisionNY>0 значит юзер стоит на плоскости. и переменную гравитации обнуляем. но каждый цикл всёравно добавляем к этой переменной силу гравитации.
если CollisionNY>0 тогда прыгать можно.

Kolobok 03.07.2010 20:33

Ответ: Вопрос-Ответ (для новичков)
 
Вложений: 1
А как можно сделать эффект обводки фиуры? :)

Я нашёл такой способ, но он не очень хороший... Цвет фигуры меняется...
Код:

shape = CreateSphere()
EntityColor shape,255,255,0

border = CreateSphere(8,shape)
EntityAlpha border,.3
EntityColor border,255,0,0
ScaleEntity border,1.1,1.1,1.1

Чтож остаётся только спрайт прилепить?

Вот как на картинке хочу )

Dream 03.07.2010 20:37

Ответ: Вопрос-Ответ (для новичков)
 
создать ещё один такой мешь, увеличить его, сделать Flip, покрасить в чёрный цвет и немного прозрачности)

Kolobok 03.07.2010 21:24

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

Сообщение от Dream (Сообщение 152729)
создать ещё один такой мешь, увеличить его, сделать Flip, покрасить в чёрный цвет и немного прозрачности)

Хы от радости нажал "Спасибо" )
Яж привёл выше тотже код! Получается что цвет фигуры, которая поверх главной фигуры, накладывается на цвет главной фигуры. И жёлтый уже не жёлый, а жёлто-красный.

Вопрос не решен! )

Dream 03.07.2010 21:36

Ответ: Вопрос-Ответ (для новичков)
 
сделать флип! читай внимательно


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

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