我要发帖 回复

中级会员

3

主题

149

积分

0

专家分

兴趣点(最多三项):

建模技术

私信
发表时间 : 2014-12-10 15:29:59 | 浏览 : 1093    评论 : 2
问题:虚拟座舱驾驶杆, 实现按“键盘← →方向键”控制 驾驶杆的左右转动,并且 按指定数量转动多与少。

代码:
int GlsF16CockpitClass::StickBase_ObjectCallback(Group* self, DisplayEvent* ev)
{
    MouseEvent* mev = (ev->eventType == EVENT_MOUSE ? (MouseEvent*)ev : NULL);
    KeyboardEvent* kev = (ev->eventType == EVENT_KEYBOARD ? (KeyboardEvent*)ev : NULL);
    CPoint poin;
    bool reas=false;
    ON_MOUSE_DOWN(MOUSE_LBUTTON)
    {
      oldx=mev->x;
      reas=true;
    }
    ON_MOUSE_DRAG(MOUSE_LBUTTON)
    {
          poin.x=mev->x;
      float newx=poin.x-oldx;
      StickBase->DynamicRotate(newx,Y_AXIS);
      reas=true;
    }
        /*if(ev->eventType==EVENT_KEYBOARD){
                KeyboardEvent *kev=(KeyboardEvent*)ev;
                if(kev->>='0' && kev->keysym<='9'){
                        StickBase->DynamicRotate(poin.x,Y_AXIS);
                }
        }*/
        KeyboardEvent *kevs=(KeyboardEvent*)ev;
        if((FL_Left==kevs->keysym)&&(ev->eventType==EVENT_KEYBOARD))//方向键左
        {
        reas=true;
        }
        if((FL_Right==kevs->keysym)&&(ev->eventType==EVENT_KEYBOARD))//方向键右
        {
                reas=true;
        }
    return reas;
}

最近VR访客

LOHAS专家组 评论于2014-12-10 15:34:58
如上示例代码  说明:
1、StickBase是驾驶杆的名称
2、DynamicRotate()函数是转动 ,我不太了解里面第一个参数,示例中Poin.x是鼠标移动的x坐标数;
3、如题,如有了解和懂的大哥帮帮我,if((FL_Left==kevs->keysym)&&(ev->eventType==EVENT_KEYBOARD))//已实现方向键左键的事件
        {
        reas=true;
        }
        if((FL_Right==kevs->keysym)&&(ev->eventType==EVENT_KEYBOARD))//已实现方向键右键事件
        {
                reas=true;
        }
obuil 评论于2014-12-15 21:08:25
你的问题是什么?
UE4   |   虚幻引擎   |   Unity VR    |    Hololens

手机版|VR开发网 ( 津ICP备18009691号 ) 统计 网安备12019202000257

GMT+8, 2020-12-6 01:26 AM

返回顶部