forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Уже наболевшее.. (http://forum.boolean.name/showthread.php?t=6097)

Samarik 10.07.2008 01:21

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

Вообщем я блиц юзаю около суток, поделал всякие примеры, понял принцип работы, делал фпс по уроку 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 перс прос улетает вверх, вообщем эксперементировал и ничего не получаеццо.
За день пересмотрел много кодов прыжка, принцып понял, реализовать немогу, копипастить неумею, в моём примере не работает:))))
Да я нуб в блице, прошу помощщи))

ABTOMAT 10.07.2008 02:49

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

З.Ы. у тебя переменная jump_speed не дробная, потому и не получается. 0.51 округляется до 1, а всё, что меньше - до 0
надо так объявлять при первом использовании
jump_speed#=.....

jimon 10.07.2008 02:56

Ответ: Уже наболевшее..
 
Samarik
ты просто делаешь особую программерскую магию :lol:

H@NON 10.07.2008 11:55

Ответ: Уже наболевшее..
 
Вложений: 1
Вот писал когда-то, баловался. Там есть приличный прыжок от первого лица, можешь оттуда взять посмотреть.

ABTOMAT 10.07.2008 12:44

Ответ: Уже наболевшее..
 
H@NON, прыжок действительно приличный) :super:
Особенно когда чел приседает перед прыжком чтобы сильнее оттолкнуться.
Надо взять на заметку.

Samarik 11.07.2008 00:18

Ответ: Уже наболевшее..
 
Цитата:

Сообщение от jimon (Сообщение 82033)
Samarik
ты просто делаешь особую программерскую магию :lol:

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

Samarik 11.07.2008 18:15

Ответ: Уже наболевшее..
 
небуду сорить в форуме, напишу тут..

у меня проблема с реализацией частиц, проблема состоит в том что я немогу сделать так чтоб частицы летели из бота, в которого я попал.
создал я частицы, они работают, создал условие что при коллизии пули с ботом летят частицы, всё это работает..
добился того что при колизии пули с ботом вылазит ошибка "ентити даз нот ексист.." ну эт када я пробовал с командами 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)

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

забыл упоммянуть, скок раз непытался реализовать частицы леели с центра координат сцены..

H@NON 11.07.2008 19:26

Ответ: Уже наболевшее..
 
делай так:
If bot_h<>0 then Create_Blood(EntityX(bot_h,1),EntityY(bot_h,1),Ent ityZ(bot_h,1 ),100)

Команда EntityCollided() возвращает ентити, с которым столкнулись.

Samarik 11.07.2008 19:28

Ответ: Уже наболевшее..
 
спасибо большое;)

ABTOMAT 11.07.2008 22:02

Ответ: Уже наболевшее..
 
Цитата:

If bot_h Create_Blood(EntityX(Bot),EntityY(Bot),EntityZ(Bot ),100)
Чего у тебя разные хендлы?
По идее если сколлизился Bot_h то и создавать нужно по его координатам а не по какому-то Bot

FrankH 11.07.2008 22:30

Ответ: Уже наболевшее..
 
Пример обработки снарядов, только вместо коллизии ентитипик.
Код:

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

может пригодится, спарки выглядят имхо неплохо.

H@NON 11.07.2008 22:46

Ответ: Уже наболевшее..
 
помойму вместо:
Цитата:

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
;)

FrankH 11.07.2008 22:53

Ответ: Уже наболевшее..
 
Цитата:

Сообщение от H@NON (Сообщение 82100)
помойму вместо:

лучше писать :
For n = 1 to 6
CtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPi tch(all\mesh),20)
Next
;)

Это был простой копипаст, и не редактировался, потому как частицы будут по иному реализованы..

Samarik 12.07.2008 12:04

Ответ: Уже наболевшее..
 
Цитата:

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

ещё один фокус....
эта.. ну.эта:)
хачу немного теории..
вот бегаю я бью кубики.. толком нич в игре нет, в том числе и толком игры. 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

я тут немогу именно разобраца к чему дельтатайм прикрутить..:)))
или на словах обьясните, чтоб следующую мою проблему (а она есть) чтоб уже сам решил:)

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

ABTOMAT 12.07.2008 14:56

Ответ: Уже наболевшее..
 
Вложений: 1
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

М.Б. так? (если не будет работать, то надо уже в демке смотреть)

Вот ещё семпл наваял:

FrankH 12.07.2008 19:50

Ответ: Уже наболевшее..
 
Цитата:

Сообщение от Samarik (Сообщение 82118)
и что оно делает?

"искры", или если поставишь текстуру дымка, то будет пыль как при попадании в стену..

Samarik 13.07.2008 00:10

Ответ: Уже наболевшее..
 
Вложений: 1
мне с с таким тяжело ещё работать, тоесть к той функци я тип написал, сунул куда нада, пишет ошибку на ентити даз нот ексист PShotSparkspr.
вобщем или с примером по использованию или ваще ненадо выкладывать..
_______________
есть трабла, её решение я знаю, но думаю это тупо, спрошу у посетителей форума:)

вот я тока запустил игру, убил первого бота, из нево кровище полилось, и 1 спрайт, только идин первый, без альфы рендерица.. как такое можно устранить?

FrankH 13.07.2008 04:24

Ответ: Уже наболевшее..
 
вот пример:
Код:

Graphics3D 800,600,32,2

cam=CreateCamera()
PositionEntity cam,0,5,0

Type plasma_shots
    Field plr,mesh,side,typ,time,life,tx#,ty#,tz#
End Type

Global GM1_power#=9
Global GM2_power#=15
Global GM3_power#=22

Global Weap_Ion1=CreateSphere();LoadMesh(GLBMeshpath$+"shoti.b3d")
;Global Ion_tex1=LoadTexture(GLBMeshpath$+"shot_ion2.png",1)
Global Weap_Ion2=CreateSphere();LoadMesh(GLBMeshpath$+"shoti.b3d")
;Global Ion_tex2=LoadTexture(GLBMeshpath$+"shot_ion1.png",1)
Global Weap_Ion3=CreateSphere();LoadMesh(GLBMeshpath$+"shotp.b3d")
;Global Ion_tex3=LoadTexture(GLBMeshpath$+"shot_plasma1.png",1)


Global weapon=CreateCube()
PositionEntity weapon,0,0,5

Global PShotSparkspr=CreateCube()
;LoadMesh(GLBMeshpath$+"shotp.b3d")
;EntityFX PShotSparkspr,5
;EntityBlend PShotSparkspr, 3
;EntityTexture PShotSparkspr,LoadTexture(GLBMeshpath$+"shot_plasma1.png",3)

Type PShotSpark
    Field num, sprite, scale#, spd#, parent, alpha#, y#
End Type

Type Unit
    Field mesh,w1t,t
End Type
u.unit=New unit
u\mesh=CreateCube()
u\t=CreatePivot(u\mesh)
ScaleEntity u\mesh,5,5,5
EntityColor u\mesh,150,50,50
PositionEntity u\mesh,0,0,160
EntityType u\mesh,2

EntityPickMode u\mesh,2
PositionEntity u\t,0,0,1000,1

While ((Not G_Exit) And (Not G_Restart))

If MouseHit(1) Then Crt_Ion_Shot(weapon,u\t,.01): u\w1t=35

UpdateShotPSpark()
UpdateIonShot()

UpdateWorld
RenderWorld
Flip ;0

If KeyHit(1) Then G_Exit=1

Wend
End


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#
                splasher\spd#=spd#
            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
Function Crt_Ion_Shot(obj,t,spd#)

        s.plasma_shots=New plasma_shots
        s\mesh=CopyEntity(Weap_Ion1): s\life=60
        tx#=EntityX#(obj,1) ty#=EntityY#(obj,1) tz#=EntityZ#(obj,1)
        PositionEntity s\mesh,tx#,ty#,tz#
        s\tx#=(EntityX#(t,1)-tx#+Rnd(-30,30))*spd# s\ty#=(EntityY#(t,1)-ty#+Rnd(-30,30))*spd# s\tz#=(EntityZ#(t,1)-tz#+Rnd(-30,30))*spd#
        PointEntity s\mesh,t
        EntityFX s\mesh,5
       
        If GSound_ON EmitSound( ion_sound_01,obj )
End Function
Function UpdateShotPSpark()

    For all.PShotSpark=Each PShotSpark
    ScaleEntity all\sprite,all\scale#,all\scale#,all\scale#
    all\scale#=all\scale#*1.1
    MoveEntity all\sprite,0,0,2.0*dt#
    If all\scale#>=1.01 Then FreeEntity all\sprite Delete all
    Next
   
End Function
Function UpdateIonShot()

    For all.plasma_shots=Each plasma_shots

    all\life=all\life-1

    TranslateEntity all\mesh,all\tx#,all\ty#,all\tz#,1

        ob=EntityPick (all\mesh,15);              ----------------Zamenit'!!!!!!!
        If ob>0 Then
            If GetEntityType (ob)=2 Then
                LP#=GP1_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),200)
                CrtPShotSpark(all\mesh,EntityYaw(all\mesh),EntityPitch(all\mesh),200)
                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

П.С. а частицы видать неправильно генерируешь. Загрузи один прототип частицы, примени к нему все что нужно, и спрячь. Затем просто копируй и делай Анхайд. Тогда все частицы одинаковы будут.

Samarik 13.07.2008 17:48

Ответ: Уже наболевшее..
 
Цитата:

есть трабла, её решение я знаю, но думаю это тупо
Цитата:

П.С. а частицы видать неправильно генерируешь. Загрузи один прототип частицы, примени к нему все что нужно, и спрячь. Затем просто копируй и делай Анхайд. Тогда все частицы одинаковы будут.
я так и думал сделать..:))

Samarik 17.07.2008 14:04

Ответ: Уже наболевшее..
 
есть проблема которую я пытаюсь решить уже несколько дней, но ниче пока не выходит. проблема состоит из частиц:). немогу реализовать так чтоб они летели но параболе. то есть, произошол взрыв из частиц, и чтоб они потом падали на землю.. помогите реализовать:)

HolyDel 17.07.2008 14:22

Ответ: Уже наболевшее..
 
O_o.
p\dx=p\dx-0.1
translateentity p\ent,0,p\dx,0

Samarik 17.07.2008 15:14

Ответ: Уже наболевшее..
 
сам попробуй так сделать и увидиш что получица.. частиы вверх не подлетают, а тока создавшись летят вниз, и ненадо мне смайлик девида блейна показывать:)))))

HolyDel 17.07.2008 15:35

Ответ: Уже наболевшее..
 
о_О.
дык это. p\dx делай во время создания частицы положительным. например 5.

Samarik 17.07.2008 15:56

Ответ: Уже наболевшее..
 
у мя с нетом траблы, неуспел вовремя то сообщение отредактировать:

>о_О. - это кумарит вопервых..

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


у мя там ещё трабла есть, после долгово убивания ботов с которых летит много кровища, (оно после ищезноения удаляеца), пули тоже удаляюца, боты после смерти тоже, но потом при попадании в бота перед "излиянием" крови и мяса наблюдаеца тормоз.. откуда он может происходить? ведь первые пару минут игры нормально-то всё.. из-за загрузки спрайтов в процессе игры может? но проверял, неоднократно, все обьекты которые уже ненужны удаляюца

Samarik 17.07.2008 17:09

Ответ: Уже наболевшее..
 
и еще есть второс. кто как реализовывает ищезновение крови? альфой пытался, так кровь мигает..

HolyDel 17.07.2008 17:10

Ответ: Уже наболевшее..
 
думаю ты делаеш так:
cp\ent = LoadSprite("");
т.е. каждый раз грузиш новый спрайт, ну и видеопамяти кирдык. делай копию. CopyEntity

Samarik 17.07.2008 17:14

Ответ: Уже наболевшее..
 
точно, спс за идею.)

нащёт ищезновения крови, писал так

alpha=alpha-.05*framePeriod*.01
EntityAlpha w\particle_type,alpha

ну бред получаеца..

HolyDel 17.07.2008 17:44

Ответ: Уже наболевшее..
 
ну хз. я как то проще делаю:
p\l=p\l-1
entityalpha p\ent,p\l*0.01
например. если время жизни - сто.

Samarik 17.07.2008 18:48

Ответ: Уже наболевшее..
 
я вобщемнакопировал спрайтов.. и тд. но тормоза сиравно появлюца.. после некоторого время игры вылетает с ошибкой о нехватке памяти..

HolyDel 17.07.2008 19:34

Ответ: Уже наболевшее..
 
покажи как добавляеш и как удаляеш спрайты.

Samarik 17.07.2008 20:07

Ответ: Уже наболевшее..
 
весь код создания частиц
Код:

Type blood_particle

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

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(.03,.09)
e\speed2=Rnd(.05,.1)
e\life=45

size#=Rnd(.1,.5)
e\particle_type=CreateSprite()
ScaleSprite e\particle_type,size,size
HideEntity e\particle_type

blood_tex=LoadTexture("tex/blood_particle2.png")
TextureFilter "blood_particle2",2
EntityTexture e\particle_type,blood_tex

e\particle_copy=CopyEntity(e\particle_type)

RotateSprite e\particle_copy,Rnd(360)
PositionEntity  e\particle_copy,x,y+.8,z
RotateEntity e\particle_copy,Rnd(-180),Rnd(-180),Rnd(-180)
EntityType e\particle_copy,Blood
Next

End Function



Function Update_blood()

For w.blood_particle=Each blood_particle

w\life=w\life-1*framePeriod*.01

MoveEntity w\particle_copy,0,w\speed2*framePeriod*.1,0
w\speed=w\speed-.03*framePeriod*.01
TranslateEntity w\particle_copy,0,w\speed*framePeriod*.08,0

bloodcoll=EntityCollided(w\particle_copy,PlaneC)
If bloodcoll <> 0 w\speed2 = .01

EntityAlpha w\particle_copy,w\life*.1*framePeriod*.02

If w\life < 0 Then
FreeEntity w\particle_copy
Delete w
particle2=0
Else
particle2=1
EndIf

Next

End Function


ABTOMAT 17.07.2008 21:21

Ответ: Уже наболевшее..
 
blood_tex=LoadTexture("tex/blood_particle2.png")
Грузим текстуру с винчестера по нескольку раз.
Отсюда и тормоза.

Samarik 17.07.2008 21:28

Ответ: Уже наболевшее..
 
чё??

ABTOMAT 17.07.2008 21:33

Ответ: Уже наболевшее..
 
Цитата:

Сообщение от Samarik (Сообщение 82456)
чё??

хде??
Кстати это ещё и память засирает
т.к. грузишь много раз но не удаляешь.

после объявления граф. режима прописать это:
Global blood_tex=LoadTexture("tex/blood_particle2.png",2)

и вот эти 2 строчки выкинуть из ф-ии создания спрайта:
blood_tex=LoadTexture("tex/blood_particle2.png")
TextureFilter "blood_particle2",2

HolyDel 17.07.2008 21:47

Ответ: Уже наболевшее..
 
Samarik, мсье маньяк?

nuclear-90 17.07.2008 22:11

Ответ: Уже наболевшее..
 
звезда в шоке))

Samarik 18.07.2008 00:03

Ответ: Уже наболевшее..
 
АВТОМАТУ спасибо, во всем разобрались. холидел и нуклеар, вы че имели ввиду?:)

FrankH 18.07.2008 00:05

Ответ: Уже наболевшее..
 
У тя функция загрузки прототипа и копирование готового прототипа на конвеер совмещены в одну, ты каждый раз создаешь спрайт, загружаешь текстуру, копируешь этот спрайт, в итоге у тебя в 2 раза больше спрайтов(и половина не удаляется) и куча тектур(они тоже не удаляются, а заполняют память), и в добавок еще тормоза от кучи лишних действий.
Загрузи частицу и текстуру ОДИН РАЗ, примени текстуру и свойства, хайдни, а уже при создании частиц крови просто копируй ее, затем удаляя копию...

Samarik 18.07.2008 10:22

Ответ: Уже наболевшее..
 
С этим я и разобрался уже. все, не смотрите на тот код шо в начале страницы:)

Dream 19.07.2008 04:21

Re: Уже наболевшее..
 
Я делал так
Код:


add_spark(0,0,38,100,2,monster\model,1,2)

где monster\model - модель бота. пишем это там где у тебя идёт колиззион с ботом

Код:


Function add_spark(x#,y#,z#,times#,scale#,parent,types,ismagic)
 spark.spark=New spark
 spark\is=1
 spark\ismagic=ismagic
 ;add_spark(0,0,0,30,1,allfire\spr[i],2,2)
If ismagic<2
 If types=1
  spark\img=CopyEntity(flame01,parent)
  EntityColor spark\img,Rnd(150,250),Rnd(0,100),0
 ElseIf types=2
  spark\img=CopyEntity(flame02,parent)
  EntityColor spark\img,0,Rnd(0,100),Rnd(150,250)
 
 EndIf
ElseIf ismagic=2
 spark\img=CopyEntity(spr1,parent)
 EntityColor spark\img,Rnd(150,250),Rnd(0,100),0
ElseIf ismagic=3
 spark\img=CopyEntity(flame01,parent)
 EntityColor spark\img,Rnd(150,250),Rnd(0,100),0
EndIf
EntityType spark\img,20
 
 spark\parent=parent
If ismagic=0
 spark\x#=Rnd(-0.8,0.8)
 spark\y#=Rnd(0.8,1.6)
 spark\z#=Rnd(-0.8,0.8)
 PositionEntity spark\img,x#,y#,z#
ElseIf ismagic=1
 spark\x#=Rnd(-0.4,0.4)
 spark\y#=Rnd(-0.1,0.6)
 spark\z#=Rnd(-0.3,1)
 PositionEntity spark\img,x#,y#,z#
 EntityParent spark\img,0
ElseIf ismagic=2
 spark\x#=Rnd(-0.3,0.3)
 spark\y#=Rnd(-0.1,0.4)
 spark\z#=Rnd(-0.1,0.2)
 PositionEntity spark\img,x#,y#,z#
 EntityParent spark\img,0
ElseIf ismagic=3
 spark\x#=Rnd(-0.04,0.04)
 spark\y#=Rnd(0.01,0.08)
 spark\z#=Rnd(-0.04,0.04)
EndIf
 
 ScaleSprite spark\img,scale,scale
 ShowEntity spark\img
 spark\scale#=scale#
 spark\times#=times#
 spark\alp#=1/times#*1000
End Function


Function update_spark()
For spark.spark=Each spark
 If spark\is=1
  spark\times#=spark\times#-1
  If spark\times>0
  If EntityCollided (spark\img,1)
    FreeEntity spark\img
    Delete spark
    Goto nesx
  EndIf
  MoveEntity spark\img,spark\x#,spark\y#,spark\z#
  EntityAlpha spark\img,spark\times#*spark\alp#/1000
  If spark\ismagic<>1
    spark\y#=spark\y#-Rnd(0.01,0.03)
  Else
    spark\y#=spark\y#-Rnd(0.004,0.008)
  EndIf
  Else
  FreeEntity spark\img
  Delete spark
  EndIf
 EndIf
 .nesx
Next
End Function

где flame01,flame02, spr1 - загруженые спрайты.
update_spark() - вставь в основном цикле
поэксперементируй с параметрами add_spark(x#,y#,z#,times#,scale#,parent,types,isma gic)

Samarik 20.07.2008 03:15

Ответ: Уже наболевшее..
 
эт ты к чему ваще все это написал?

Dream 20.07.2008 03:22

Re: Уже наболевшее..
 
небуду сорить в форуме, напишу тут..

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

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

К этому гг))):-D


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

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