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

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

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

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 28.03.2011, 09:23   #1
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Смех Физика и капсула

Блин ломаю голову целую неделю. Подскжите как можно "заморозить" поворот кпсулы по осям X и Z. А то чет когда я пишу: xRotateentity capsule,0,mx_cam,0 и потом двигаю игрока ( прикладываю физ. силу ) у меня все ровно капсула поворачиваеться чуть чуть ( градусов на 10).

И,наверно,из-з этого, когда я подхожу к стене и нажимаю прыгать у меня перс отскакивает назад.
(Offline)
 
Ответить с цитированием
Старый 28.03.2011, 17:40   #2
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Физика и капсула

В той теме не ответили...Так зачем новую создавать?

А Заморозка повоторов по осям делается очень прочто:
float YRotate=GetEntityRotateY();
xRotateBody(body,0,YRotate,0);
(Offline)
 
Ответить с цитированием
Старый 28.03.2011, 18:13   #3
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Физика и капсула

А Заморозка повоторов по осям делается очень прочто:
float YRotate=GetEntityRotateY();
xRotateBody(body,0,YRotate,0);
Павел я же писал выше:
А то чет когда я пишу: xRotateentity capsule,0,mx_cam,0 и потом двигаю игрока ( прикладываю физ. силу ) у меня все ровно капсула поворачиваеться чуть чуть ( градусов на 10).
И вобще есть ли такие команды в Xors3d GetEntityRotateY() xRotateBody(body,0,YRotate,0);
(Offline)
 
Ответить с цитированием
Старый 29.03.2011, 01:01   #4
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Физика и капсула

У меня кароч вот какая проблема: когда капсула движется вверх ( близь стены ) она цепляет triangl`ы и отскакивает. Почему так??
(Offline)
 
Ответить с цитированием
Старый 29.03.2011, 13:25   #5
falcon
Разработчик
 
Аватар для falcon
 
Регистрация: 12.07.2008
Сообщений: 523
Написано 196 полезных сообщений
(для 470 пользователей)
Ответ: Физика и капсула

потому, что нельзя ходить вверх по стенам?
(Offline)
 
Ответить с цитированием
Старый 29.03.2011, 16:43   #6
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Физика и капсула

Вот тут я нарисовл.

1) Состояние покоя ( когда просто стоит)
2) Передвижение ( наклоняется град. на 10)
3) Столкновение со стеной
4) Прыжок (когда капсула движится вверх каким-то образом она цепляется за стену а потом отскакивает)
5) Отскакивание Почему??
6) Цепляется капсула ( как по мне )
Миниатюры
Нажмите на изображение для увеличения
Название: Capsule3.JPG
Просмотров: 1027
Размер:	23.0 Кб
ID:	13151  
(Offline)
 
Ответить с цитированием
Старый 29.03.2011, 17:10   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Физика и капсула

Там нету никаких физ. полигонов, что направлены backface'ами вниз, и когда капсула идёт вверх, заходит в эти трианглы но с задней (backface) стороны?
(Offline)
 
Ответить с цитированием
Старый 29.03.2011, 17:53   #8
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Физика и капсула

Там нету никаких физ. полигонов, что направлены backface'ами вниз, и когда капсула идёт вверх, заходит в эти трианглы но с задней (backface) стороны?
Moka, вроде нет.


Может я чет в коде намудрил:

Include "xors3d.bb"

xSetAntiAliasType xGetMaxAntiAlias()
xAppTitle "Shooter"
xGraphics3D 800,600, 32, 0, 1
xCreateDSS 1024, 1024
xHidePointer 


Global jump=0,opt=0,timer=0,t#=0,xd#=0,xr,tel,bgh#,zadr#=0,pps#=0,prm#=0,kar=0,fres=0,J=0,fres2=0,kmc=1,o=0,pxo#=0,ps#=0,cpe#=1

Global fr#,fr2#,slow#,orbit#,ch#,vest=0,ck=1,sl#=10,kof=0,speedi=0,gravi=0





cube = xLoadMesh("cap.b3d")
xEntityAlpha cube,0.3


cubs=xCreateCube()
xScaleEntity cubs,4,13,4
xEntityAlpha cubs,1
xEntityColor cubs,0,255,0


cubs3=xCreateCube()
xScaleEntity cubs3,16,0.01,16
xEntityColor cubs3,255,0,0
xEntityAlpha cubs3,0

cam = xCreateCamera()
xCameraRange cam,1,10000

light = xCreateLight()
xPositionEntity light,0,0,0
xRotateEntity light,80,60,0
xLightConeAngles light,0,9
xLightRange light,180


conelight =xCreateCone()
xRotateEntity conelight,-90,0,0
xScaleEntity conelight,10,10,10
xEntityParent conelight,light

xInitShadows(1024, 1024, 640)

xAmbientLight 160,160,160
xSetShadowParams 6, 0.99, 1, 100
xLightEnableShadows light, True
xLightShadowEpsilons light, 0.0001, 0.16
xCameraEnableShadows cam


automat = xLoadMesh("auto.b3d",cam)
xRotateEntity automat,0,180,0
xPositionEntity automat,2.9,-13,13
xScaleEntity automat,0.1,0.1,0.1



PotMesh = xLoadMesh("fran4.b3d")
xScaleEntity PotMesh,0.3,0.3,0.3
xEntityAddTriMeshShape(PotMesh,0)
xPositionEntity PotMesh,100,-2000,0





Repeat
		
;If xKeyDown(8) Then xTurnEntity light,0.3,0,0

;If xKeyDown(7) Then xTurnEntity light,-0.3,0,0
	

	
	
If xMeshesIntersect(cubs,PotMesh) Then
me_c1=1
Else
me_c1=0
orbit=1
EndIf


	mx#=(xMouseYSpeed()*0.2)
    my#=(xMouseXSpeed()*0.2)

dmx#=dmx#+mx#
dmy#=dmy#-my#

xRotateEntity cam,dmx,dmy,0
xRotateEntity cube,0,dmy,0
xEntityFriction(PotMesh,0.9)

slow=xCurv(slow,xEntityY(cube),4)+ck*5


xPositionEntity cam,xEntityX(cube),Cos(pxo)+slow,xEntityZ(cube)-50
xPositionEntity cubs,xEntityX(Cube),xEntityY(Cube)-15,xEntityZ(Cube)
xPositionEntity cubs3,xEntityX(Cube),xEntityY(Cube)-10,xEntityZ(Cube)

    xMoveMouse xGraphicsWidth()/2,xGraphicsHeight()/2

pxo=pxo+7
If pxo>=360 Then pxo=360


xPhysicsDebugRender(0)

	force=230
	max_speed=10
	


If me_c1=1 Then
If tel=2 Then
foc#=1000
EndIf

If tel=1 Then
foc#=foc#+1200
tim=0
EndIf
If foc#>=speedi Then foc=speedi

Else
If kmc=1
foc#=0
Else
foc#=foc#-3000
If foc#<=100 Then foc=100
EndIf
EndIf


tel=2


Fc=Cos(xEntityYaw(cube)-90)*foc
Fs=Sin(xEntityYaw(cube)-90)*foc

Fc2=Cos(xEntityYaw(cube)+180)*foc/1
Fs2=Sin(xEntityYaw(cube)+180)*foc/1

Fc3=Cos(xEntityYaw(cube))*foc/1
Fs3=Sin(xEntityYaw(cube))*foc/1

WS=xKeyDown(17)-xKeyDown(31)
AD=xKeyDown(30)-xKeyDown(32)

If WS<>0 And AD<>0 Then 
speedi=5000
Else
speedi=7000
EndIf

If fres<=1
If xKeyDown(17)
xEntityApplyForce(Cube, -Fc, 0, -Fs,0,0,0)
If xKeyDown(42) Then
xEntityApplyForce(Cube, -Fc/1.6*10, 0, -Fs/1.6*10,0,0,0)
EndIf
tel=1
EndIf
If xKeyDown(31)
xEntityApplyForce(Cube, Fc, 0, Fs,0,0,0)
tel=1
EndIf
If xKeyDown(30)
xEntityApplyForce(Cube, Fc2, 0, Fs2,0,0,0)
tel=1
EndIf
If xKeyDown(32)
xEntityApplyForce(Cube, Fc3, 0, Fs3,0,0,0)
tel=1
EndIf
EndIf


If orbit=1 Then ch=ch+1
If orbit=0 Then ch=0
If fres2=2 And (ch>90 Or delta=0) Then pxo=0:delta=0


If tel=2 Then tim=tim+1


If me_c1 Then
fres2=fres2+2
If fres2>=25 Then
orbit=0
If tel=1 Then xd#=0.99
If tel=2 Then xd#=1
fres2=25
Else
xd=0.92
EndIf 
Else
fres2=0
xd#=0
EndIf


If jump=0 
If xKeyHit(57) Then Goto part3
EndIf

If jump=1
If xKeyHit(57) Then 
J=1
jump=0
delta=1
EndIf
EndIf

.part3


xEntityContactDistance(Cube,1)




fr=1
If xKeyDown(17) Then
If xKeyDown(42)
fr=0.6
EndIf
EndIf
fr2=1.1








If kmc=1 Then o=o+1
If o>=20 Then 
kmc=0
o=0
EndIf
If kmc=1 Then 
jump=0
EndIf


If kmc=0 Then 
If me_c1=1 Then
jump=1
Else
jump=0
EndIf
EndIf




If J=1 Then
kmc=1
fres2=0
fres=fres+1 
If fres>3 And fres<20 Then
jump=0
xd=0
If xKeyDown(17) Then
xEntityApplyForce(Cube,Fc/fr, 2,Fs/fr,0,0,0)
EndIf
If xKeyDown(31)
xEntityApplyForce(Cube,-Fc/fr, 2,-Fs/fr,0,0,0)
EndIf
If xKeyDown(30)
xEntityApplyForce(Cube,-Fc2/fr, 2,-Fs2/fr,-100,0,0)
EndIf
If xKeyDown(32)
xEntityApplyForce(Cube,-Fc3/fr, 2,-Fs3/fr,0,0,0)
EndIf

EndIf




If fres>=9
J=0
fres=0
EndIf 


If fres<=3 Then
xEntityApplyForce(Cube, 0, 100, 0,0,0,0)
xd=0
jump=0
If xKeyDown(17) Then
xEntityApplyForce(Cube, Fc*fr2, 0, Fs*fr2,0,0,0)
EndIf
If xKeyDown(31)
xEntityApplyForce(Cube, -Fc*fr2, 0, -Fs*fr2,0,0,0)
EndIf
If xKeyDown(30)
xEntityApplyForce(Cube, -Fc2*fr2, 0, -Fs2*fr2,0,0,0)
EndIf
If xKeyDown(32)
xEntityApplyForce(Cube, -Fc3*fr2, 0, -Fs3*fr2,0,0,0)
EndIf
xRotateEntity cube,0,dmy,0
gravi=60
EndIf




Else
If me_c1=1 Then
If fres2>=5 And fres2<17 Then
gravi=-80
EndIf
ElseIf fres2=0
gravi=-50
ElseIf fres2=25
gravi=-10
EndIf
EndIf

If xEntityContactDistance(Cube,1) <>0 Then xRotateEntity cube,0,0,0


If xKeyHit(29) Then
vest=1-vest
If vest=1 Then
xFreeEntityShapes(cube)
fres2=0
xd=0.96
xEntityAddHullShape(cube,100)
ck=0.5
Else
xd=0
ck=1
N=0
xFreeEntityShapes(cube)
EndIf
EndIf

N=N+1
If N<5 Then
xd=0
xMoveEntity cube,0,1,0
Else
N=5
EndIf

If n=2 Then 
xEntityAddHullShape(cube,100)
fres2=3
EndIf



xEntityGravity(cube,0,gravi,0)

xEntityDamping(cube,xd#,-999)




xUpdateWorld(60)	




	xRenderWorld(1,1)
	

xText 60,100,"   Jump =  "+foc+"   "+fres2+"  "+cpe+"  "+o+"     "+xd+"Dist = "+xEntityContactDistance(Cube,1),1,1
xText 400,100,"Fps="+xGetFPS(),1,1

xFlip
Until xKeyHit(1)
End
xCurv - аналог CurveValue ( сам создал для удобства )
(Offline)
 
Ответить с цитированием
Старый 30.03.2011, 16:20   #9
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Физика и капсула

Пример "глюка" :
Вложения
Тип файла: rar Game1.rar (5.84 Мб, 720 просмотров)
(Offline)
 
Ответить с цитированием
Старый 01.04.2011, 01:01   #10
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Физика и капсула

Вот кажись что-то у меня начало прояснятьса. Кароче под моим долгим наблюдением и эксперементированием я заметил, что капсула глючит из-за тримеша ( уровня ).
Пример:
1. Создал обычный Box сделал его xEntityAddBoxShape(...) - всё норм.
2. Создал обычный Box сделал его xEntityAddHullShape(...) - тоже всё норм.
3. Создал обычный Box сделал его xEntityAddTriMeshShape(...) - все глючит, т.е во-первых: почему-то рисуется дополнительный триугльник , во-вторых: происходит столкновение c triangl`ами и в-третих: капсула,если применить хорошую физ. силу проходит сквозь стену, а потом возвращается обратно, но с толчком.

Растолкуйте мне пожалуста в чем дело.
(Offline)
 
Ответить с цитированием
Старый 02.04.2011, 15:28   #11
Mind
ПроЭктировщик
 
Аватар для Mind
 
Регистрация: 24.02.2011
Сообщений: 188
Написано 13 полезных сообщений
(для 18 пользователей)
Ответ: Физика и капсула

Объясните мне пожалуста в чем дело??



А как можно посчитать child`ы в уровне чтоб сделать их Hull`ами. С помощью какой функции???
(Offline)
 
Ответить с цитированием
Старый 22.02.2013, 19:04   #12
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: Физика и капсула

В учебнике Автомата по физиксу есть функция CreateHullOfAllMesh() или как то так.
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Старый 23.02.2013, 18:07   #13
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Физика и капсула

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

Ничего что "Последняя активность: 06.08.2012 11:04"
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (12.05.2014)
Ответ


Опции темы

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

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


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


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