|
3D-программирование Вопросы, касающиеся программирования 3D мира |
22.03.2007, 03:29
|
#1
|
Оператор ЭВМ
Регистрация: 18.03.2007
Сообщений: 21
Написано одно полезное сообщение
|
Помогите c системою выстрела
Всем привет!
Щас пытаюсь написать банальную игрушку типа танчиков!
Проблема такова: Как мне осуществить систему выстрела танка?
Ну или польот снаряда, угол, силу?
Заране спосибо!
|
(Offline)
|
|
22.03.2007, 04:17
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Помогите c системою выстрела
Я делал выстрелы танчика, но там у меня была подогнана формула. Тоесть скорость была постоянная. А вот угол был что-то там связано с растоянием. Крч я делал пивот при создании танка, и позиционировал его в место дула. А при выстреле создавал цилиндр И делал ЭнтитиПоинт на цель. Затем поднимал (поворачивал по Yaw), и запускал. Для пуль у меня был массив. Двигались они уже независемо, и просто медленно поворачивали вниз. И проверял на коллизию Танк(Бокс)-Пуля(полигон).
|
(Offline)
|
|
22.03.2007, 16:47
|
#3
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Re: Помогите c системою выстрела
Лучше посмотри в FAQ( там есть тема Создаем свой First Person Shooter) и там упоминается как делать выстрелы
__________________
|
(Offline)
|
|
23.03.2007, 00:49
|
#4
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Помогите c системою выстрела
mr.DIMAS ты не совсем понял, тут варриант создания выстрелов и имитации Ядра от танка. Ядро не летит прямо, оно летит и на него действует притяжение, это нужно учитывать.
|
(Offline)
|
|
23.03.2007, 04:27
|
#5
|
Легенда
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений (для 568 пользователей)
|
Re: Помогите c системою выстрела
Так в чем проблема? Когда ядро вылетает из дула, просто вычетаешь из Y некоторое значение.
|
(Offline)
|
|
23.03.2007, 05:09
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Помогите c системою выстрела
это грубый способ. Мой способ более реалестичен и хорош (имхо)
|
(Offline)
|
|
23.03.2007, 10:52
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Помогите c системою выстрела
твой способ тоже грубый.
даеш гравитацию для ядра!
|
(Offline)
|
|
23.03.2007, 12:06
|
#8
|
|
Re: Помогите c системою выстрела
вот код для поиска угла в 2д системе
; This function was made by Mikle's friend Dima (DiGlib)
; with the help of MathLab. Thanks to MathLab developers!
; Calculates the angle, on which the gun must be rotated
; so that the bullet would appear currently at (x, y).
; x, y - target coordinates
; V - speed of bullet
; g - acceleration that will influence on bullet's Y-speed
; when it flies (usually gravity and Archimede's Force)
; bStraight - if the trajectory is grazing or curved
Function CalcGunAngle#(x#, y#, V#, g#, bStraight = True)
Local V2#, x2#, y2#, yg#
Local w1#, w2#, sw2#, atx#, aty#, Ang#
g = g*0.5
V2 = V*V
x2 = x*x
y2 = y*y
yg = y*g
If bStraight > 0
w1 = Sqr((V2*V2+4*V2*yg-4*g*g*x2))
Else
w1 = -Sqr((V2*V2+4*V2*yg-4*g*g*x2))
EndIf
w2 = (V2+2*yg+w1)/(x2+y2)
sw2 = Sqr(w2)
atx = (0.5*y*w2-g)/(V*sw2)
aty = 0.5*sw2*x/V
Ang = ATan2(atx, aty)
Return Ang
End Function
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TEST
Global GW = 640
Global GH = 480
Graphics GW, GH, 16, 2
SetBuffer BackBuffer()
HidePointer
Font = LoadFont("Courier", 16, True, False, False)
SetFont Font
Local Gravity# = -0.5
Local ArchForce# = 0.2
Local p_x# = 0
Local p_y# = 0
Local v# = 15
Local g# = Gravity+ArchForce
Local radius# = 5
Local ang#[1]
Local x#[1], y#[1]
Local cx#[1], cy#[1]
Local vx#[1], vy#[1]
While Not KeyHit(1)
; Set the target to mouse's position
p_x = MouseX()
p_y = GH-MouseY()
; Change speed, if necessary
v = v+(MouseDown(1)-MouseDown(2))*0.1
If (v < 0) Then v = 0
; Calculate angles
ang[0] = CalcGunAngle(p_x, p_y, v, g, True)
ang[1] = CalcGunAngle(p_x, p_y, v, g, False)
Cls
; Show target
Color 255, 0, 0
Oval p_x-radius, GH-p_y-radius, radius*2, radius*2, False
; Draw trajectories
For ia = 0 To 1
If Upper(ang[ia]) <> "NAN"
x[ia] = 0
y[ia] = 0
cx[ia] = 0
cy[ia] = 0
vx[ia] = v*Cos(ang[ia])
vy[ia] = v*Sin(ang[ia])
Color 255*ia, 255, 0
For t# = 1 To 1000
cx[ia] = vx[ia]*t
cy[ia] = vy[ia]*t+(g*0.5)*t^2
Line x[ia], GH-y[ia], cx[ia], GH-cy[ia]
x[ia] = cx[ia]
y[ia] = cy[ia]
Next
EndIf
Next
; Output results
Color 255, 255, 255
txt_x = 0
txt_y = 0
Text txt_x, txt_y, "Move mouse to change target position."
txt_y = txt_y + FontHeight()
Text txt_x, txt_y, "Mouse left/right button to change speed."
txt_y = txt_y + FontHeight()
Text txt_x, txt_y, "X = "+p_x
txt_y = txt_y + FontHeight()
Text txt_x, txt_y, "Y = "+p_y
txt_y = txt_y + FontHeight()
Text txt_x, txt_y, "Speed = "+v
txt_y = txt_y + FontHeight()
Text txt_x, txt_y, "Acceleration = "+g
txt_y = txt_y + FontHeight()
Text txt_x, txt_y, "Grazing angle = "+ang[0]
txt_y = txt_y + FontHeight()
Text txt_x, txt_y, "Curved angle = "+ang[1]
txt_y = txt_y + FontHeight()
Flip
Wend
FreeFont Font
EndGraphics
End
в етом коде все есть что нужно
осталось только в 3д перевести думаю с етим проблем не будет ... если правильно спроекцируеш ..
|
|
|
23.03.2007, 21:07
|
#9
|
Оператор ЭВМ
Регистрация: 18.03.2007
Сообщений: 21
Написано одно полезное сообщение
|
Re: Помогите c системою выстрела
Пасиба друзя!
Вот у меня созрел такой вот вопрос:
Как зделать передачу траектории снаряда (типа кинетической силы) например противнику или другому обекту на карте при столкновение?
|
(Offline)
|
|
23.03.2007, 21:15
|
#10
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Помогите c системою выстрела
ну как.
перемещаеш снаряд, все равно придется.
значит есть переменные изменения позиции (там где translateentity)
назовем их dx,dy,dz, вот и при столкновении, противнику задаеш эти три пременные и двигаеш противника translateentity, плано уменьшая значения перменных d*. например dx=dx*0.9/
|
(Offline)
|
|
23.03.2007, 21:20
|
#11
|
Оператор ЭВМ
Регистрация: 18.03.2007
Сообщений: 21
Написано одно полезное сообщение
|
Re: Помогите c системою выстрела
Ясно, щас попробую!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Эфект от выстрела |
Ganociy |
Blitz3D |
11 |
02.11.2009 17:59 |
Часовой пояс GMT +4, время: 15:29.
|