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#
курсора в скриншоте виндус не сделал