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=2608)

Fant 04.02.2007 19:48

Координаты
 
Код:

Const typecube1=1
Const typecube2=2
 
Graphics3D 640,480,16,2
 
Global a#,b#;
a#=1.23;
b#=NoDrob(a#);
 
Const UPS=60
 
cam=CreateCamera()
l=CreateLight()
 
fontA=LoadFont ("arial",32)
SetFont fontA
 
period=1000/UPS
time=MilliSecs()-period
 
cube=CreateCube()
PositionEntity cube,b,0,10
EntityType cube,typecube1
EntityColor cube,237,210,22
 
cube2=CreateCube()
PositionEntity cube2,-8.76,0,10
EntityType cube2,typecube2
 
Collisions typecube1,typecube2,3,2

Repeat
    Repeat
          elapsed=MilliSecs()-time
    Until elapsed
    ticks=elapsed/period
    tween#=Float(elapsed Mod period)/Float(period)
   
    For k=1 To ticks
          time=time+period   
 If KeyHit(1)FreeFont fonta: End
  If KeyDown(203) Then MoveEntity cube,-b#,0,0
  If KeyDown(205) Then MoveEntity cube,b#,0,0
         
          UpdateWorld   
    Next
   
    RenderWorld tween
Text 0,0,""+b#
Text 0,30,""+EntityX(cube)
Text 0,60,""+EntityX(cube2)
    Flip
Forever
 

Function NoDrob(x#)
Return (x);
End Function

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

Errthou 04.02.2007 20:47

Re: Координаты
 
В чем проблема конкретно? Вычислить координаты? Отбросить дробную часть? Или присвоить полученные координаты кубу?

Fant 04.02.2007 21:05

Re: Координаты
 
Нужно сначала:
1) Вычислить коордн.
2) Отбросить дробную часть
3) затем присвоить координаты кубу

Fant 05.02.2007 13:19

Re: Координаты
 
Но если честно, то там по-моему все сделанно, кроме как присвоить целочисленную координату кубу, исправив его "неправильную" (нецелочисленную) координату

Errthou 05.02.2007 17:15

Re: Координаты
 
Ну тогда PositionEntity тебе в руки :)

Fant 05.02.2007 18:19

Re: Координаты
 
Цитата:

Сообщение от Errthou
Ну тогда PositionEntity тебе в руки :)

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

Diplomat 05.02.2007 18:27

Re: Координаты
 
Заведи переменную "CubeMoveMode", в которой храни необходимый режим размещения для своего кубика: 0- свободное перемещение, 1- размещение по целочисленной координате. В нужный момент присваивай ей 1, а в ненужный- соответственно 0.
А потом- простое ветвление: IF CubeMoveMode=1 THEN PositionEntity Cube, Int(EntityX(Cube,1)),...
Или я чего-то не понял? Т.к. не сильно вчитывался...

Fant 08.02.2007 21:36

Re: Координаты
 
Цитата:

Сообщение от Diplomat
Заведи переменную "CubeMoveMode", в которой храни необходимый режим размещения для своего кубика: 0- свободное перемещение, 1- размещение по целочисленной координате. В нужный момент присваивай ей 1, а в ненужный- соответственно 0.
А потом- простое ветвление: IF CubeMoveMode=1 THEN PositionEntity Cube, Int(EntityX(Cube,1)),...
Или я чего-то не понял? Т.к. не сильно вчитывался...

К сожалению я не понял, что ты мне хочешь предложить! Можно поподробнее?


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

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