Показать сообщение отдельно
Старый 16.02.2011, 23:11   #4
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Строго под курсором )))

Graphics3D ScreenW,ScreenH,Bits,FullScreen
ScreenW2=ScreenW/2 ; полуширина
ScreenH2=ScreenH/2; полувысота

Global ViewScale ; высота камеры (вид сверху)
ViewScale=15

Global GunTarget,GunTargetFix# ; GunTarget - это модель прицела, GunTargetFix# - моя вычислительная смещения 2д к 3д
GunTarget=CreateCube()
EntityColor GunTarget,50,20,20
EntityBlend GunTarget,3
ScaleEntity GunTarget,.1,.1,.1
GunTargetSetFix() ; вызов функции вычисления смещения 2д к 3д

PositionEntity GunTarget,PlayerX#+(MouseX()-ScreenW2)*GunTargetFix#,0.5,PlayerY#+(ScreenH2-MouseY())*GunTargetFix# ; перемещение прицела под курсор(как именно чёто переварить уже не могу, не охота, главное действует)
		PointEntity Player,GunTarget ; игрок смотрит на прицел

Function GunTargetSetFix()
	GunTargetFix#=19.072*ScreenW+(0.0031*ViewScale)

; 19.072 - погрешность относительно ширины экрана
; 0.0031 - погрешность высоты взгляда камеры
End Function
как это сделал понять и разбирать уже не хочется - главное срабатывает...

зы: код сокращён с моего исходника, может тут строчку пропустил для точности прицеливания...
камеру расположить как в TDS, предложить пример не могу, т.к. камера мульти-Case-режимная
а вот..
Global Camera=CreateCamera()	;создание камеры
PositionEntity Camera,MapX#,ViewScale,MapY#
RotateEntity Camera,90,0,0

PlayerX#=EntityX#(Player)
PlayerY#=EntityZ#(Player)
	
PositionEntity Camera,PlayerX#,ViewScale,PlayerY#

курсора в скриншоте виндус не сделал
(Offline)
 
Ответить с цитированием