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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 12.07.2010, 19:22   #1
WhiteBlack
Нуждающийся
 
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений
(для 3 пользователей)
Плохо извинити, но опять магнит

и снова здрасьте!
Я уже сегодня задавал вопрос про магнит.... вообщем вот что то нававял, но какая то фигня получилась, да еще и какие то глюки непонятные(шарики должны слипаться, а у меня некоторые на расстоянии друг от друга). Если нетрудно посмотрите, подскажите что не так, или как лучше сделать, плиз
вот код:

SeedRnd MilliSecs()

Graphics3D 1024, 768
SetBuffer BackBuffer()

;типы для столкновения
Const type_magnit=1, type_telo=2, type_pol=3

;массив притягивемых тел
Dim telos(10)

;камера
cam=CreateCamera()
PositionEntity cam, 0, 3, 0
TurnEntity cam, 30, 0, 0

;свет
lit=CreateLight()

;пол
pol=CreatePlane()
poltex=CreateTexture(32, 32)
SetBuffer TextureBuffer(poltex)
Color(0, 15, 255)
Rect(0, 0, 32, 32, 1)
Color(0, 0, 0)
Rect(0, 0, 32, 32, 0)
SetBuffer BackBuffer()
EntityTexture pol, poltex
PositionEntity pol, 0, -5, 0
EntityType pol, type_pol

;магнит
Global magnit=CreateSphere(32)
ScaleEntity magnit, .6, .6, .6
PositionEntity magnit, -1.5, 0, 5
EntityType magnit, type_magnit

;притягиваемые тела
For i=1 To 10
telos(i)=CreateSphere(32)
ScaleEntity telos(i), .5, .5, .5
PositionEntity telos(i), Rnd(-5,5), Rnd(-5,5), Rnd(-5,5)
EntityType telos(i), type_telo
EntityRadius telos(i), .5
Next

;проверка на столкновения
Collisions type_telo, type_magnit, 2, 1
Collisions type_telo, type_pol, 2, 2
Collisions type_telo, type_telo, 2, 2


Repeat

;фокусировка камеры на магните
PointEntity(cam, magnit)

;вращение камеры
If KeyDown(200) MoveEntity cam, 0, 0, .1
If KeyDown(20 MoveEntity cam, 0, 0, -.1
If KeyDown(203) MoveEntity cam, .1, 0, 0
If KeyDown(205) MoveEntity cam, -.1, 0, 0

;функция притяжения
gravity()

UpdateWorld
RenderWorld
Flip

Until KeyHit(1)

End

;------------------------------------gravity power--------------------------
Function gravity()

For i=1 To 10
If EntityDistance(magnit, telos(i))<15 Then
If EntityX(telos(i))>EntityX(magnit) MoveEntity telos(i), -0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i))), 0, 0
If EntityX(telos(i))<EntityX(magnit) MoveEntity telos(i), 0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i))), 0, 0
If EntityY(telos(i))>EntityY(magnit) MoveEntity telos(i), 0, -0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i))), 0
If EntityY(telos(i))<EntityY(magnit) MoveEntity telos(i), 0, 0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i))), 0
If EntityZ(telos(i))>EntityZ(magnit) MoveEntity telos(i), 0, 0, -0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i)))
If EntityZ(telos(i))<EntityZ(magnit) MoveEntity telos(i), 0, 0, 0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i)))
End If
Next

End Function
;----------------------------------end function-------------------------------
(Offline)
 
Ответить с цитированием
Старый 12.07.2010, 22:52   #2
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: извинити, но опять магнит

1)
If KeyDown(20 MoveEntity cam, 0, 0, -.1
If KeyDown(208) MoveEntity cam, 0, 0, -.1
2)Зачем такие сложности с функцией gravity
;------------------------------------gravity power--------------------------
Function gravity()

For i=1 To 10
If EntityDistance(magnit, telos(i))<15 And EntityDistance(magnit, telos(i))>1 Then
PointEntity(telos(i), magnit)
MoveEntity telos(i),0,0,.01
End If
Next

End Function
;----------------------------------end function-------------------------------
Вот и всё!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
WhiteBlack (13.07.2010)
Старый 12.07.2010, 23:06   #3
pitonms
Знающий
 
Аватар для pitonms
 
Регистрация: 15.06.2009
Адрес: Санкт-Петербург
Сообщений: 291
Написано 36 полезных сообщений
(для 66 пользователей)
Ответ: извинити, но опять магнит

Вот скажи нахрен делать второй топик ??? в тот не написать ???

http://lurkmore.ru/%D0%A2%D1%80%D0%BE%D0%BB%D1%8C - пройди сюда
(Offline)
 
Ответить с цитированием
Старый 12.07.2010, 23:21   #4
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Смущение Ответ: извинити, но опять магнит

Сообщение от pitonms Посмотреть сообщение
Вот скажи нахрен делать второй топик ??? в тот не написать ???

http://lurkmore.ru/%D0%A2%D1%80%D0%BE%D0%BB%D1%8C - пройди сюда
Да ладно, он же новичёк! Я когдато тоже так делал
(Offline)
 
Ответить с цитированием
Старый 12.07.2010, 23:22   #5
pitonms
Знающий
 
Аватар для pitonms
 
Регистрация: 15.06.2009
Адрес: Санкт-Петербург
Сообщений: 291
Написано 36 полезных сообщений
(для 66 пользователей)
Ответ: извинити, но опять магнит

Сообщение от Den Посмотреть сообщение
Да ладно, он же новичёк! Я когдато тоже так делал
хреново так жить
(Offline)
 
Ответить с цитированием
Старый 13.07.2010, 01:17   #6
WhiteBlack
Нуждающийся
 
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: извинити, но опять магнит

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


Опции темы

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

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


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


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