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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 10.07.2008, 01:21   #1
Samarik
Оператор ЭВМ
 
Регистрация: 08.02.2007
Сообщений: 47
Написано 0 полезных сообщений
(для 0 пользователей)
Уже наболевшее..

Доброго времени суток)
Речь пойдёт о прыжке, плавном прыжке..
Знаю, да, такие темы есть, всё описано, но так как написано в других темах, тупняк, заканчиваеца всё тем что каждый друг другу говорит что у нево неправильно, выкладывая свой неправильный пример и тд...

Вообщем я блиц юзаю около суток, поделал всякие примеры, понял принцип работы, делал фпс по уроку http://blitzetc.blitzmax.ru/index.ph...Person_Shooter , там в конце есть описание прыжка, но лучше сделать игру без прыжка чем с таким...

Видел тут темку "плавный прыжок"
Function UpdateJump(MovEnt,ObjFrom,JH)
jump_Speed=jump_speed-0.9
If jump_speed <=0 Then jump_speed = 0
If EntityCollided(MovEnt,ObjFrom) If KeyHit(57) Then 
jump_speed=JH
End If
TranslateEntity MovEnt,0,jump_speed,0
End Function
с этим кодом, тут jump_Speed=jump_speed-0.9 при изменении меньше чем на 0,51 перс прос улетает вверх, вообщем эксперементировал и ничего не получаеццо.
За день пересмотрел много кодов прыжка, принцып понял, реализовать немогу, копипастить неумею, в моём примере не работает)))
Да я нуб в блице, прошу помощщи))
(Offline)
 
Ответить с цитированием
Старый 10.07.2008, 02:49   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Лампочка Ответ: Уже наболевшее..

Чел, я ж уже давал пример (выложу тут, может, кому-то поможет):
Jumping_cube.zip
Тут все имхо понятно.
Есть вектор направления прыжка, который описывается всего одной переменной (т.к. прыжок происходит только по оси Y).
Когда игрок хочет прыгать, задаём этому вектору большое значение.
Этот вектор меняется в соответствии с силой тяжести (просто вычитаем каждый цикл из вектора число N)
И каждый цикл перемещаем игрока по этому вектору.
В результате игрок летит по параболе.
Когда игрок коллизится с землёй, перестаём его перемещать по вектору прыжка ибо он уже не прыгает.
Вообще, это элементарная кинематика из курса физики средней школы.
Ну что непонятного?

З.Ы. у тебя переменная jump_speed не дробная, потому и не получается. 0.51 округляется до 1, а всё, что меньше - до 0
надо так объявлять при первом использовании
jump_speed#=.....
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена


Последний раз редактировалось ABTOMAT, 10.07.2008 в 10:52.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Android (17.07.2008), impersonalis (10.07.2008), Samarik (11.07.2008)
Старый 10.07.2008, 02:56   #3
jimon
 
Сообщений: n/a
Ответ: Уже наболевшее..

Samarik
ты просто делаешь особую программерскую магию

Последний раз редактировалось jimon, 10.07.2008 в 03:15.
 
Ответить с цитированием
Старый 10.07.2008, 11:55   #4
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Уже наболевшее..

Вот писал когда-то, баловался. Там есть приличный прыжок от первого лица, можешь оттуда взять посмотреть.
Вложения
Тип файла: zip dialogsRPG.zip (1.60 Мб, 389 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (10.07.2008)
Старый 10.07.2008, 12:44   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Уже наболевшее..

H@NON, прыжок действительно приличный)
Особенно когда чел приседает перед прыжком чтобы сильнее оттолкнуться.
Надо взять на заметку.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 11.07.2008, 00:18   #6
Samarik
Оператор ЭВМ
 
Регистрация: 08.02.2007
Сообщений: 47
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Уже наболевшее..

Сообщение от jimon Посмотреть сообщение
Samarik
ты просто делаешь особую программерскую магию
Посмотри на свою клавиатуру (о_О)
H@NON, пасибо ща заценим..)
Всё, сори за шорох, разобрался, H@NON, в блице як таким кодам ещё не привык, так что пока не лез туда, но прыжок прикольный
АВТАМАТ, нащёт "jump_speed#" спс, оно мне и помогло, норм прыжок теперь

Последний раз редактировалось Samarik, 11.07.2008 в 01:22.
(Offline)
 
Ответить с цитированием
Старый 11.07.2008, 18:15   #7
Samarik
Оператор ЭВМ
 
Регистрация: 08.02.2007
Сообщений: 47
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Уже наболевшее..

небуду сорить в форуме, напишу тут..

у меня проблема с реализацией частиц, проблема состоит в том что я немогу сделать так чтоб частицы летели из бота, в которого я попал.
создал я частицы, они работают, создал условие что при коллизии пули с ботом летят частицы, всё это работает..
добился того что при колизии пули с ботом вылазит ошибка "ентити даз нот ексист.." ну эт када я пробовал с командами EntityX(Bot),y,z и тд..

выложу код частиц
Type blood_particle

Field x#,y#,z#
Field speed#
Field life#
Field particle_type

End Type

Function Create_blood(x#,y#,z#,col)

For i=1 To col
e.blood_particle=New blood_particle
e\x=x
e\y=y
e\z=z
e\speed=Rnd(-2,2)
e\life=40

e\particle_type=LoadSprite("tex/blood_particle.png")
ResetEntity e\particle_type
PositionEntity  e\particle_type,x,y,z
TurnEntity e\particle_type,Rnd(360),Rnd(360),Rnd(360)
Next

End Function

Function Update_blood()

For w.blood_particle=Each blood_particle
MoveEntity w\particle_Type,0,0,w\speed
w\life=w\life-1

If w\life<=0 Then
FreeEntity w\particle_type
Delete w
EndIf

Next

End Function
описывал так:
bot_h=EntityCollided(a\entity,BOTT)

If bot_h Create_Blood(EntityX(Bot),EntityY(Bot),EntityZ(Bot ),100)

ну, это уже я эксперементировал с тем что неполучаеца))

забыл упоммянуть, скок раз непытался реализовать частицы леели с центра координат сцены..
(Offline)
 
Ответить с цитированием
Старый 11.07.2008, 19:26   #8
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Уже наболевшее..

делай так:
If bot_h<>0 then Create_Blood(EntityX(bot_h,1),EntityY(bot_h,1),Ent ityZ(bot_h,1 ),100)

Команда EntityCollided() возвращает ентити, с которым столкнулись.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Samarik (11.07.2008)
Старый 11.07.2008, 19:28   #9
Samarik
Оператор ЭВМ
 
Регистрация: 08.02.2007
Сообщений: 47
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Уже наболевшее..

спасибо большое
(Offline)
 
Ответить с цитированием
Старый 11.07.2008, 22:02   #10
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Уже наболевшее..

If bot_h Create_Blood(EntityX(Bot),EntityY(Bot),EntityZ(Bot ),100)
Чего у тебя разные хендлы?
По идее если сколлизился Bot_h то и создавать нужно по его координатам а не по какому-то Bot
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 11.07.2008, 22:30   #11
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Ответ: Уже наболевшее..

Пример обработки снарядов, только вместо коллизии ентитипик.
Function UpdateIonShot()

    For all.plasma_shots=Each plasma_shots
    all\life=all\life-1
    TranslateEntity all\mesh,all\tx#*dt#,all\ty#*dt#,all\tz#*dt#,1
        ob=EntityPick (all\mesh,5);               ----------------Zamenit'!!!!!!!
        If ob>0 Then
            If GetEntityType (ob)=2 Then
                If all\typ=1 LP#=GP1_power# Else If all\typ=2 LP#=GP2_power# Else If all\typ=3 LP#=GP3_power# Else If all\typ=4 LP#=GP4_power# Else If all\typ=5 LP#=GP5_power#
                u.Unit=Object.Unit(EntityName(ob))
                u\health#=u\health#-(LP#*.01*(100-u\shield));If u\plr=0
                u\speed#=u\speed#*.6

                CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
                CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
                CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
                CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
                CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)
                CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),20)

            EndIf
        EndIf
    If (all\life<=0) Or (ob) Then FreeEntity all\mesh Delete all
    Next
    
End Function
ну и спарки при пикании бота
Function CrtPShotSpark(boat,vecy=0,vecp=0,ang=0,spd#=3,min#=2,max#=4)
            splasher.PShotSpark=New PShotSpark
            splasher\parent=boat
            splasher\sprite=CopyEntity(PShotSparkspr)
            RotateEntity splasher\sprite,vecp+Rnd(-ang,ang)-180,vecy+Rnd(-ang,ang),0
                splasher\scale#=min#;Rnd(min#,max#)
                splasher\spd#=spd#;+mass
            ScaleEntity splasher\sprite,splasher\scale#,splasher\scale#,splasher\scale#*3
            PositionEntity splasher\sprite,EntityX(splasher\parent,True),EntityY(splasher\parent,True),EntityZ(splasher\parent,True)
End Function
может пригодится, спарки выглядят имхо неплохо.
(Offline)
 
Ответить с цитированием
Старый 11.07.2008, 22:46   #12
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 774 пользователей)
Ответ: Уже наболевшее..

помойму вместо:
CtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPi tch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityP itch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityP itch(all\mesh),20)CrtPShotSpark(all\mesh,EntityYaw (all\mesh),EntityPitch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityP itch(all\mesh),20)
CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityP itch(all\mesh),20)
лучше писать :
For n = 1 to 6
CtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPi tch(all\mesh),20)
Next
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
FrankH (11.07.2008)
Старый 11.07.2008, 22:53   #13
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Ответ: Уже наболевшее..

Сообщение от H@NON Посмотреть сообщение
помойму вместо:

лучше писать :
For n = 1 to 6
CtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPi tch(all\mesh),20)
Next
Это был простой копипаст, и не редактировался, потому как частицы будут по иному реализованы..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
H@NON (11.07.2008)
Старый 12.07.2008, 12:04   #14
Samarik
Оператор ЭВМ
 
Регистрация: 08.02.2007
Сообщений: 47
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Уже наболевшее..

ну и спарки при пикании бота
и что оно делает?

ещё один фокус....
эта.. ну.эта
хачу немного теории..
вот бегаю я бью кубики.. толком нич в игре нет, в том числе и толком игры. 59-60 фпс, колеблица, тока поставлю Flip(0) то фпс 1к+
вот это, оно что такова делает, когда просто флип, стабилизируется фпс в проге? или обьясните мне что это такое..

и ещё вот, заметил, то что у мня было зa-delta_time-ировано, работает нормально как при 1к так и при 60фпс, а вот кодик с пыжком неполучаеца уравновесить, *delta_time "пихал" уже куда угодно, настройки мутил, пробовал разные комбинации, немогу никак стабилизировать чтоб было как при 60 так и при 1к фпс..

Function UpdateJump(MovEnt,ObjFrom,JH#)
jump_Speed=jump_speed-0.1
If jump_speed <=0 Then jump_speed = 0
If EntityCollided(MovEnt,ObjFrom) If KeyHit(57) Then 
jump_speed=JH
End If
TranslateEntity MovEnt,0,jump_speed,0
End Function
я тут немогу именно разобраца к чему дельтатайм прикрутить..))
или на словах обьясните, чтоб следующую мою проблему (а она есть) чтоб уже сам решил

шото смайликов у мня в посте дохрена..

Последний раз редактировалось Samarik, 12.07.2008 в 13:08.
(Offline)
 
Ответить с цитированием
Старый 12.07.2008, 14:56   #15
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Уже наболевшее..

Flip 1 - вертикальная синхронизация, Flip 0 - отсутствие оной.

Function UpdateJump(MovEnt,ObjFrom,JH#)
jump_Speed=jump_speed-0.01*dt
If jump_speed <=0 Then jump_speed = 0
If EntityCollided(MovEnt,ObjFrom) If KeyHit(57) Then 
jump_speed=JH
End If
TranslateEntity MovEnt,0,jump_speed*.1*dt,0
End Function
М.Б. так? (если не будет работать, то надо уже в демке смотреть)

Вот ещё семпл наваял:
Вложения
Тип файла: zip delta-time sample.zip (625 байт, 344 просмотров)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена


Последний раз редактировалось ABTOMAT, 12.07.2008 в 15:22. Причина: Пардон, ещё одно место не углядел (исправил)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос про наболевшее - коллизии. DEGABB 3D-программирование 47 10.02.2008 02:37


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


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