Ogre笔记(4)

增加动画:

 
  
Ogre::Entity * _ent; // 增加动画效果的实体的指针
Ogre::AnimationState * _aniState; // 所使用动画状态的指针
 
  
_aniState = _ent -> getAnimationState( " Dance " ); // 获取“Dance”动画状态
_aniState -> setEnabled( true ); // 允许动画
_aniState -> setLoop( true ); // 允许动画循环
 
  
_aniState -> addTime(evt.timeSinceLastFrame); // 距上次刷新的时间

设定移动按键响应:

 
  
if (_key -> isKeyDown(OIS::KC_UP))
{
  SinbadTranslate
+= Ogre::Vector3( 0 , 0 , - 1 );
  _rotation
= 3.14f ;
  walked
= true ;
}
if (_key -> isKeyDown(OIS::KC_DOWN))
{
  SinbadTranslate
+= Ogre::Vector3( 0 , 0 , 1 );
  _rotation
= 0.0f ;
  walked
= true ;
}
if (_key -> isKeyDown(OIS::KC_LEFT))
{
  SinbadTranslate
+= Ogre::Vector3( - 1 , 0 , 0 );
  _rotation
= - 1.57f ;
  walked
= true ;
}
if (_key -> isKeyDown(OIS::KC_RIGHT))
{
  SinbadTranslate
+= Ogre::Vector3( 1 , 0 , 0 );
  _rotation
= 1.57f ;
  walked
= true ;
}

判定是否在行走:

 
  
if (walked)
{
  _aniState
-> setEnabled( true );
  _aniStateTop
-> setEnabled( true );
  
if (_aniState -> hasEnded())
  {
    _aniState
-> setTimePosition( 0.0f );
  }
  
if (_aniStateTop -> hasEnded())
  {
    _aniStateTop
-> setTimePosition( 0.0f );
  }
}
else
{
  _aniState
-> setTimePosition( 0.0f );
  _aniState
-> setEnabled( false );
  _aniStateTop
-> setTimePosition( 0.0f );
  _aniStateTop
-> setEnabled( false );
}

旋转模型节点:

 
  
_node -> resetOrientation();
_node
-> yaw(Ogre::Radian(_rotation));

增加物体到相应部位:

 
  
_SinbadEnt -> attachObjectToBone( " Handle.L " , sword1);
_SinbadEnt
-> attachObjectToBone( " Handle.R " , sword2);

输出所有动画名:

 
  
Ogre::AnimationStateSet * set = _SinbadEnt -> getAllAnimationStates();
Ogre::AnimationStateIterator iter
= set -> getAnimationStateIterator();
while (iter.hasMoreElements())
{
  std::cout
<< iter.getNext() -> getAnimationName() << std::endl;
}

转载于:https://www.cnblogs.com/elite/articles/2036695.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值