|
3D-программирование Вопросы, касающиеся программирования 3D мира |
04.02.2007, 19:48
|
#1
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Координаты
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
При столкновении этих двух кубиков хотелось бы, что бы у желтого кубика координаты округлялись и куб "занимал позицию округленной координаты. То есть пытаюсь избежать погрешностей.
|
(Offline)
|
|
04.02.2007, 20:47
|
#2
|
Оператор ЭВМ
Регистрация: 22.01.2007
Сообщений: 32
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Координаты
В чем проблема конкретно? Вычислить координаты? Отбросить дробную часть? Или присвоить полученные координаты кубу?
|
(Offline)
|
|
04.02.2007, 21:05
|
#3
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Координаты
Нужно сначала:
1) Вычислить коордн.
2) Отбросить дробную часть
3) затем присвоить координаты кубу
|
(Offline)
|
|
05.02.2007, 13:19
|
#4
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Координаты
Но если честно, то там по-моему все сделанно, кроме как присвоить целочисленную координату кубу, исправив его "неправильную" (нецелочисленную) координату
|
(Offline)
|
|
05.02.2007, 17:15
|
#5
|
Оператор ЭВМ
Регистрация: 22.01.2007
Сообщений: 32
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Координаты
Ну тогда PositionEntity тебе в руки
|
(Offline)
|
|
05.02.2007, 18:19
|
#6
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Координаты
Сообщение от Errthou
Ну тогда PositionEntity тебе в руки
|
Я примерно знаю что делает эта команда, но, как видно из моего кода, мне к сожалению до сих пор не удалось после столкновения с белым кубиком установить желтый кубик в целочисленную координату
|
(Offline)
|
|
05.02.2007, 18:27
|
#7
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Re: Координаты
Заведи переменную "CubeMoveMode", в которой храни необходимый режим размещения для своего кубика: 0- свободное перемещение, 1- размещение по целочисленной координате. В нужный момент присваивай ей 1, а в ненужный- соответственно 0.
А потом- простое ветвление: IF CubeMoveMode=1 THEN PositionEntity Cube, Int(EntityX(Cube,1)),...
Или я чего-то не понял? Т.к. не сильно вчитывался...
|
(Offline)
|
|
08.02.2007, 21:36
|
#8
|
Бывалый
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений (для 5 пользователей)
|
Re: Координаты
Сообщение от Diplomat
Заведи переменную "CubeMoveMode", в которой храни необходимый режим размещения для своего кубика: 0- свободное перемещение, 1- размещение по целочисленной координате. В нужный момент присваивай ей 1, а в ненужный- соответственно 0.
А потом- простое ветвление: IF CubeMoveMode=1 THEN PositionEntity Cube, Int(EntityX(Cube,1)),...
Или я чего-то не понял? Т.к. не сильно вчитывался...
|
К сожалению я не понял, что ты мне хочешь предложить! Можно поподробнее?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:26.
|