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

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

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

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

Ответ
 
Опции темы
Старый 22.03.2007, 03:29   #1
GetMan
Оператор ЭВМ
 
Регистрация: 18.03.2007
Сообщений: 21
Написано одно полезное сообщение
Смех Помогите c системою выстрела

Всем привет!
Щас пытаюсь написать банальную игрушку типа танчиков!
Проблема такова: Как мне осуществить систему выстрела танка?
Ну или польот снаряда, угол, силу?
Заране спосибо!
(Offline)
 
Ответить с цитированием
Старый 22.03.2007, 04:17   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Помогите c системою выстрела

Я делал выстрелы танчика, но там у меня была подогнана формула. Тоесть скорость была постоянная. А вот угол был что-то там связано с растоянием. Крч я делал пивот при создании танка, и позиционировал его в место дула. А при выстреле создавал цилиндр И делал ЭнтитиПоинт на цель. Затем поднимал (поворачивал по Yaw), и запускал. Для пуль у меня был массив. Двигались они уже независемо, и просто медленно поворачивали вниз. И проверял на коллизию Танк(Бокс)-Пуля(полигон).
(Offline)
 
Ответить с цитированием
Старый 22.03.2007, 16:47   #3
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Re: Помогите c системою выстрела

Лучше посмотри в FAQ( там есть тема Создаем свой First Person Shooter) и там упоминается как делать выстрелы
__________________

(Offline)
 
Ответить с цитированием
Старый 23.03.2007, 00:49   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Помогите c системою выстрела

mr.DIMAS ты не совсем понял, тут варриант создания выстрелов и имитации Ядра от танка. Ядро не летит прямо, оно летит и на него действует притяжение, это нужно учитывать.
(Offline)
 
Ответить с цитированием
Старый 23.03.2007, 04:27   #5
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Re: Помогите c системою выстрела

Так в чем проблема? Когда ядро вылетает из дула, просто вычетаешь из Y некоторое значение.
(Offline)
 
Ответить с цитированием
Старый 23.03.2007, 05:09   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Помогите c системою выстрела

это грубый способ. Мой способ более реалестичен и хорош (имхо)
(Offline)
 
Ответить с цитированием
Старый 23.03.2007, 10:52   #7
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Помогите c системою выстрела

твой способ тоже грубый.
даеш гравитацию для ядра!
(Offline)
 
Ответить с цитированием
Старый 23.03.2007, 12:06   #8
jimon
 
Сообщений: n/a
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
GetMan
Оператор ЭВМ
 
Регистрация: 18.03.2007
Сообщений: 21
Написано одно полезное сообщение
Re: Помогите c системою выстрела

Пасиба друзя!
Вот у меня созрел такой вот вопрос:
Как зделать передачу траектории снаряда (типа кинетической силы) например противнику или другому обекту на карте при столкновение?
(Offline)
 
Ответить с цитированием
Старый 23.03.2007, 21:15   #10
HolyDel
 
Регистрация: 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
GetMan
Оператор ЭВМ
 
Регистрация: 18.03.2007
Сообщений: 21
Написано одно полезное сообщение
Re: Помогите c системою выстрела

Ясно, щас попробую!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эфект от выстрела Ganociy Blitz3D 11 02.11.2009 17:59


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


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