forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Проблемы с CollisionN(X,Y,Z) и Collision(X,Y,Z) (http://forum.boolean.name/showthread.php?t=8634)

Nuprahtor 09.07.2009 19:27

Проблемы с CollisionN(X,Y,Z) и Collision(X,Y,Z)
 
Возникла проблема с этими командами.
Здесь код, с помощью которого я делаю некое подобие декалей (взял из одного примера):

Код:

nx#=0
                        ny#=0
                        nz#=0
                        num#=CountCollisions(bul\model)
                        For i=1 To num
                                nx=nx+CollisionNX(bul\model,i)
                                ny=ny+CollisionNY(bul\model,i)
                                nz=nz+CollisionNZ(bul\model,i)
                                x#=x#+CollisionX(bul\model,i)
                                y#=y#+CollisionY(bul\model,i)
                                z#=z#+CollisionZ(bul\model,i)
                       
                        nx=nx/num
                        ny=ny/num
                        nz=nz/num
                        x=x/num
                        y=y/num
                        z=z/num



Здесь вычисляется угол столкновения между двух объектов. Когда пуля bul\model сталкивается с уровнем, на месте столкновения появляется спрайт:

Код:

dec.decal = New decal
                        dec\sprite = CopyEntity (scorchsprite)
                        dec\life# = 0.8
                        RotateSprite dec\sprite,Rand(360)
                        temp#=0.3+Rnd(0.6)
                        ScaleSprite dec\sprite,temp#,temp#
                        PositionEntity dec\sprite,x,y,z
                        AlignToVector dec\sprite,-nx,-ny,-nz,0
                        MoveEntity dec\sprite,0,0,-0.2
                        DebugLog "Decal created at " +x+""+y+""+z

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

shyrikkk 04.01.2010 15:44

Ответ: Проблемы с CollisionN(X,Y,Z) и Collision(X,Y,Z)
 
Я тебе кодом конечно не смогу помоч , но я бы сделал по другому если уж без выходное положение !!!
Нарисуй спрайт (дробь) который дожен вылетать из оружия , и спрайт который отпечатается после выстрела встену (тоже как будто из дробовика ) !!! НО здесь есть маленькое НО !!!
Если стрельнуть на угол какойнибудь стены спрайт так на углу и отпечатаеться (спрайт дроби ),

а внормальных играх часть дроби сталкиваеться встенке , а часть летит дальше потому что в стенку не попала другая часть дроби (стрельба же идёт в угол) !!!
вспомни игрушку CS1.6


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

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