|
31.08.2012, 20:58
|
#1501
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Подскажите как вот так сделать.
А именно есть платформы и кубики. Если кубик на платформе, то она перекрашивается в красный, а если нет, то в зеленый. Делаю без коллизий, проверяю на дистанцию. Проблема в том что у меня вечно тупняки с перебором объектов. На данный момент все это дело работает только для одного кубика.
---
Сделал через лайн пик, но тоже самое выходит
For d.TDepot = Each TDepot
m\p = LinePick (m\x,m\y,m\z,0,-0.5,0)
If m\p = d\ent Then
d\is123 = 1
Else
d\is123 = 0 // тут вся борода. надо как то по другому, но не знаю как. :)
EndIf
Next
Последний раз редактировалось Nex, 31.08.2012 в 21:58.
|
(Offline)
|
|
31.08.2012, 23:06
|
#1502
|
Мастер
Регистрация: 23.09.2009
Адрес: ленобласть
Сообщений: 1,189
Написано 447 полезных сообщений (для 2,526 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
функция пересечения квадрата и прямоугольника тебе в помощь
Function cross_square_and_rect(x1#,y1#,x2#,y2#,x#,y#,side#)
w#=x1-x2 h#=y1-y2 centerx#=x1-w/2 centery#=y1-h/2
If Abs(centerx - x) <= (Abs(w) + side) / 2 And Abs(centery - y) <= (Abs(h) + side) / 2 Return True End Function
|
(Offline)
|
|
31.08.2012, 23:19
|
#1503
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Я просил помочь с перебором объектов, а не с пересечением.
|
(Offline)
|
|
31.08.2012, 23:59
|
#1504
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Сообщение от Nex
Я просил помочь с перебором объектов, а не с пересечением.
|
Я думаю что в поле куда записан хэндл квадратика во всех элементах коллекции прописано одно и тоже значение. Потому и работает только для одного.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
01.09.2012, 00:54
|
#1505
|
Элита
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений (для 3,833 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Сообщение от pepel
функция пересечения квадрата и прямоугольника тебе в помощь
Function cross_square_and_rect(x1#,y1#,x2#,y2#,x#,y#,side#) w#=x1-x2 h#=y1-y2 centerx#=x1-w/2 centery#=y1-h/2 If Abs(centerx - x) <= (Abs(w) + side) / 2 And Abs(centery - y) <= (Abs(h) + side) / 2 Return True End Function
|
Так будет куда шустрее если хочешь проверить коллизии:
Function CollisionDetect(x1,y1,w1,h1,x2,y2,w2,h2)
If x1 > (x2+w2) Or (x1+w1) < x2 Then Return False
If y1 > (y2+h2) Or (y1+h1) < y2 Then Return False
Return True
End Function
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Dzirt за это полезное сообщение:
|
|
08.09.2012, 17:11
|
#1506
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Пытаюсь по-быстрому напилить easing.
Набросал простую функцию:
Function curve_f#(t#,typ) ;Где t от 0 до 1
Select typ
Case 0 ;Linear
Return t
Case 1 ;In
Return 1-Cos(t*90)
Case 2 ;Out
Return Sin(t*90)
Case 3 ;Cubic
Return curve_f(t*2,1)*0.5
End Select
End Function
Но мне нужна более сложная вещь.
Я решил делать графики из четырёх точек, как-то так:
Type curve_q_t ;Quad-pointed curve
Field p.curve_q_t_p[4]
End Type
Type curve_q_t_p ;Point
Field x#,y#
Field typ ;см. curve_f
End Type
Function curve_q#(q.curve_q_t,t#)
For i = 1 To 3
If q\p[i]\x>=t Then
bc# = curve_f( (t-q\p[i-1]\x)/(q\p[i]\x-q\p[i-1]\x) , q\p[i-1]\typ) ;Извините за говнокод
Return q\p[i-1]\y+(q\p[i]\y-q\p[i-1]\y)*bc
End If
Next
End Function
Function curve_q_Create.curve_q_t(p1y#,p1t,p2x#,p2y#,p2t,p3x#,p3y#,p3t,p4y#,p4t )
q.curve_q_t = New curve_q_t
q\p[0] = New curve_q_t_p
q\p[0]\y = p1y
q\p[0]\typ = p1t
q\p[1] = New curve_q_t_p
q\p[1]\x = p2x
q\p[1]\y = p2y
q\p[1]\typ = p2t
q\p[2] = New curve_q_t_p
q\p[2]\x = p3x
q\p[2]\y = p3y
q\p[2]\typ = p3t
q\p[3] = New curve_q_t_p
q\p[3]\x = 1
q\p[3]\y = p4y
q\p[3]\typ = p4t
Return q
End Function
Но оно даёт неточный результат.
Нет ли готовых решений?
|
(Offline)
|
|
08.09.2012, 23:19
|
#1507
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
пытался сделать поворот оьъекта мышью как в шутерах. Не получилось. Поварачивал, не поварачивал, объект двигается потом не правильно
|
(Offline)
|
|
09.09.2012, 19:11
|
#1508
|
Социал-сычевист
Регистрация: 24.06.2011
Сообщений: 611
Написано 342 полезных сообщений (для 1,359 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Сообщение от Okay
пытался сделать поворот оьъекта мышью как в шутерах. Не получилось. Поварачивал, не поварачивал, объект двигается потом не правильно
|
Не может быть такого, значит ты что-то не то вертишь. Скинь код. (только КОД ПОВОРОТА, а не over 9000 строк всей программы)
|
(Offline)
|
|
08.10.2012, 22:37
|
#1509
|
AnyKey`щик
Регистрация: 29.07.2012
Сообщений: 12
Написано 5 полезных сообщений (для 27 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Загрузил модель формата b3d в свой проект после чего фпс сильно упал, начались сильные тормоза. полигонов в модели всего 1482. Пользовался B3dPipeline. Подскажите как правильно загружать модели в Blitz.
|
(Offline)
|
|
08.10.2012, 23:16
|
#1510
|
Бывалый
Регистрация: 17.12.2011
Сообщений: 862
Написано 443 полезных сообщений (для 1,133 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Сообщение от PREy
Загрузил модель формата b3d в свой проект после чего фпс сильно упал, начались сильные тормоза. полигонов в модели всего 1482. Пользовался B3dPipeline. Подскажите как правильно загружать модели в Blitz.
|
Так
Graphics3D 640,480
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,0,20,-100
light=CreateLight()
RotateEntity light,90,0,0
t=LoadMesh("tic.3ds")
While Not KeyDown(1)
RenderWorld
Flip
Wend
End
|
(Offline)
|
|
09.10.2012, 00:06
|
#1511
|
Знающий
Регистрация: 21.11.2011
Сообщений: 284
Написано 17 полезных сообщений (для 74 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Сообщение от PREy
Загрузил модель формата b3d в свой проект после чего фпс сильно упал, начались сильные тормоза. полигонов в модели всего 1482. Пользовался B3dPipeline. Подскажите как правильно загружать модели в Blitz.
|
FLIP скорее всего забыл
|
(Offline)
|
|
09.10.2012, 02:24
|
#1512
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Сообщение от PREy
Загрузил модель формата b3d в свой проект после чего фпс сильно упал, начались сильные тормоза. полигонов в модели всего 1482. Пользовался B3dPipeline. Подскажите как правильно загружать модели в Blitz.
|
Возможно загружаешь модель в цикле. Надо загружать до Repeat или до While.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
09.10.2012, 09:21
|
#1513
|
Бывалый
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений (для 866 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
я 3дс юзаю поэтому не знаю но возможно у тебя в модельке оч много объектов
|
(Offline)
|
|
09.10.2012, 15:01
|
#1514
|
AnyKey`щик
Регистрация: 29.07.2012
Сообщений: 12
Написано 5 полезных сообщений (для 27 пользователей)
|
Ответ: Вопрос-Ответ (для новичков)
Nex прав. Я оформил загрузку модели как функцию и добавил еще несколько команд, а сама функция находилась в главном цикле. Спасибо за помощь
|
(Offline)
|
|
23.10.2013, 10:27
|
#1515
|
AnyKey`щик
Регистрация: 07.10.2013
Сообщений: 9
Написано одно полезное сообщение
|
Ответ: Вопрос-Ответ (для новичков)
У меня проблема с аниммироваными объектами. Вот например: загузил через LoadAnimMesh модель дверей. Нормально сделал анимацию. Потом загрузил управление от первого лица и вот тут я и встретил проблему. Если приблизиться камерой ко двери и отвернуть её где-то на 45 градусов, то дверь просто исчезает, а если вернуть камеру в исходное положение, то дверь появляется. Я заметил такой прикол, что если в 3д редакторе сдвинуть меш немного дальше от центра координат и экспортировать в игру, то этот баг исчезает, но появился еще один такой самый: если открыть дверь и посмотреть на нее с другой стороны, то она опять начинает исчезать и появляться Как можно убрать этот баг?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:05.
|