|
26.08.2010, 15:15
|
#1
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
PhysicsEngine
Вот хочу написать физический движок.Как можно проверить столкновение с линией
program PhysicsEngine; var xPos,yPos,xPosBall,yPosBall,xMove,yMove,keyAction,tecla:integer; Bsize,Psize:integer; procedure init; begin xposball:=100; yposball:=100; yMove := 3; xPos:=160; psize:=32; bsize:=15; end; begin init; repeat tecla:=getkeypressed; keyaction:= keyToAction(tecla); if keyAction = GA_LEFT then xPos := xPos - 2; if keyAction = GA_RIGHT then xPos := xPos + 2; setColor(255, 255, 255); fillRect(0, 0, getWidth, getHeight); setColor(0, 0, 0); drawEllipse(xPosball, yPosball,bsize,bsize); drawEllipse(xPosball+20, yPosball,bsize,bsize); xPosball := xPosball + xMove; yPosball := yPosball + yMove; delay(30); setColor(0, 0, 0); drawline(xpos,getHeight-10,xpos-100,getHeight-10); repaint; until tecla=KE_STAR; end.
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
26.08.2010, 17:03
|
#2
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: PhysicsEngine
из старой pascal'евской игрушки:
function DistToBar(x1, y1, x2, y2, x0, y0 : Integer) : Boolean;
{находится ли точка (x0,y0) в прямоугольнике (x1,y1)-(x2,y2)}
Var
dx, dy : Integer;
Begin
dx := abs(x2-x1);
dy := abs(y2-y1);
if dx < 15 then dx := 15;
if dy < 15 then dy := 15;
DistToBar := (abs(x1-x0) <= dx) and (abs(x2-x0) <= dx)
and (abs(y1-y0) <= dy) and (abs(y2-y0) <= dy);
End;
function DistToLine(x1, y1, x2, y2, x0, y0, maxDist : Integer) : Boolean;
{расстояние от точки (x0,y0) до отрезка (x1,y1, x2,y2)}
Var
A, B, C : LongInt;
dist : Real;
Begin
x1 := x1 - x0;
y1 := y1 - y0;
x2 := x2 - x0;
y2 := y2 - y0;
x0 := 0; {?}
y0 := 0; {?}
A := y1 - y2;
B := x2 - x1;
C := LongInt(y2)*x1 - LongInt(y1)*x2;
dist := Sqrt(A*A + B*B);
if dist <> 0 then dist := abs(A*x0{?=0} + B*y0{?=0} + C) / dist;
DistToLine := (dist <= maxDist);
End;
Function OnLine(x0, y0, dist, x1, y1, x2, y2 : Integer) : Boolean;
{проверка на пересечение линии на карте}
Begin
OnLine := DistToBar(x1, y1, x2, y2, x0, y0)
and DistToLine(x1, y1, x2, y2, x0, y0, dist);
End;
|
(Offline)
|
|
26.08.2010, 18:51
|
#3
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: PhysicsEngine
а что за тип A, B, C : LongInt;
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
26.08.2010, 21:30
|
#4
|
ПроЭктировщик
Регистрация: 18.12.2007
Сообщений: 157
Написано 24 полезных сообщений (для 27 пользователей)
|
Ответ: PhysicsEngine
То же, что и обычный Integer в MidletPascal.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
26.08.2010, 23:37
|
#5
|
Знающий
Регистрация: 21.07.2009
Адрес: Украина
Сообщений: 219
Написано 44 полезных сообщений (для 78 пользователей)
|
Ответ: PhysicsEngine
в longint просто большее макс. значение чем в integer
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.08.2010, 02:43
|
#6
|
ПроЭктировщик
Регистрация: 21.06.2009
Адрес: Беларусь, Столбцы
Сообщений: 148
Написано 32 полезных сообщений (для 57 пользователей)
|
Ответ: PhysicsEngine
но в мп такого типа нет, но фактически диапазон мп-овского интеджера равен настоящему лонгинту
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.08.2010, 10:32
|
#7
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: PhysicsEngine
Спасибо а через либ game можно проверить столкновение?
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
27.08.2010, 12:05
|
#8
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: PhysicsEngine
а смысл?
начни лучше с броска шарика под любым углом и отскоком от стены.
потом падающим (по дуге) прямоугольничком.
прикрутить более сложную графику и сделать бесконечный хвост из либ ты всегда успеешь
|
(Offline)
|
|
27.08.2010, 14:21
|
#9
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: PhysicsEngine
Вот мой подобный проект на flash
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
31.08.2010, 16:51
|
#10
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: PhysicsEngine
Вот то что меня вдохновило
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
01.09.2010, 04:16
|
#11
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Ответ: PhysicsEngine
Флеш - супер, а джар почему-то ниодин эмулятор не открыл..
Upd: только на Нокии заработала (сонька, симак и мотор отказались запускать!)
__________________
Уважай собеседника, а лучше подари ему +
Последний раз редактировалось Trazzy, 04.09.2010 в 09:21.
|
(Offline)
|
|
03.09.2010, 14:53
|
#12
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: PhysicsEngine
Как проверить столкновение с линией с помошю Lib_game???
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
03.09.2010, 15:41
|
#13
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: PhysicsEngine
вот так примерно будет выглядеть уровень
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
03.09.2010, 21:19
|
#14
|
Нуждающийся
Регистрация: 17.03.2010
Адрес: Колпашево, Томская обл.
Сообщений: 88
Написано 21 полезных сообщений (для 25 пользователей)
|
Ответ: PhysicsEngine
Решил свою гравити сделать? похвально. сделай ещё корректную физику камней под колёсьями, чтобы непредсказуемо кататься
__________________
Teeworlds 4ever!
|
(Offline)
|
|
04.09.2010, 16:06
|
#15
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: PhysicsEngine
Сделал карту топерь вся запара со столкновением
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:06.
|