//三维窗口有onkeyboardmessage事件
axTE3DWindow1_OnKeyboardMessage(object sender, AxTerraExplorerX._ITE3DWindowEvents_OnKeyboardMessageEvent e)
{
//禁用默认的键盘操作
{
//禁用默认的键盘操作
e.pbHandled = true;
switch (e.keyCode)
{
switch (e.keyCode)
{
//按照CS游戏的操作模式设置四个方向的移动
case 65://A
IPosition6 pos = sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE);//先GetPosition
double x = pos.Altitude * 0.2;
IPosition6 newpos = pos.Move(x, 270 + pos.Yaw, 0);
case 65://A
IPosition6 pos = sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE);//先GetPosition
double x = pos.Altitude * 0.2;
IPosition6 newpos = pos.Move(x, 270 + pos.Yaw, 0);
newpos.Pitch = pos.Pitch;
newpos.Yaw = pos.Yaw;
sgworld.Navigate.SetPosition(newpos);
break;
case 83://S
IPosition6 pos1 = sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE);
double x1 = pos1.Altitude * 0.2;
IPosition6 newpos1 = pos1.Move(x1, 180+pos1.Yaw, 0);
newpos1.Pitch = pos1.Pitch;
newpos1.Yaw = pos1.Yaw;
sgworld.Navigate.SetPosition(newpos1);
break;
case 68://D
IPosition6 pos2 = sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE);
double x2 = pos2.Altitude * 0.2;
IPosition6 newpos2 = pos2.Move(x2, 90 + pos2.Yaw, 0);
newpos2.Pitch = pos2.Pitch;
newpos2.Yaw = pos2.Yaw;
sgworld.Navigate.SetPosition(newpos2);
break;
case 87://W
IPosition6 pos3 = sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE);
double x3 = pos3.Altitude * 0.2;
IPosition6 newpos3 = pos3.Move(x3, pos3.Yaw, 0);
newpos3.Pitch = pos3.Pitch;
newpos3.Yaw = pos3.Yaw;
sgworld.Navigate.SetPosition(newpos3);
break;
newpos.Yaw = pos.Yaw;
sgworld.Navigate.SetPosition(newpos);
break;
case 83://S
IPosition6 pos1 = sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE);
double x1 = pos1.Altitude * 0.2;
IPosition6 newpos1 = pos1.Move(x1, 180+pos1.Yaw, 0);
newpos1.Pitch = pos1.Pitch;
newpos1.Yaw = pos1.Yaw;
sgworld.Navigate.SetPosition(newpos1);
break;
case 68://D
IPosition6 pos2 = sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE);
double x2 = pos2.Altitude * 0.2;
IPosition6 newpos2 = pos2.Move(x2, 90 + pos2.Yaw, 0);
newpos2.Pitch = pos2.Pitch;
newpos2.Yaw = pos2.Yaw;
sgworld.Navigate.SetPosition(newpos2);
break;
case 87://W
IPosition6 pos3 = sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE);
double x3 = pos3.Altitude * 0.2;
IPosition6 newpos3 = pos3.Move(x3, pos3.Yaw, 0);
newpos3.Pitch = pos3.Pitch;
newpos3.Yaw = pos3.Yaw;
sgworld.Navigate.SetPosition(newpos3);
break;
}
转载于:https://blog.51cto.com/speciallist/1103483