在 Cocos2DX 中移动动画精灵和路径
moving animated sprite along with a path in cocos2dx
我想移动一个动画精灵和一个路径(我的意思是std::vector <cocos2d::P> st)。
这是我的代码。
std::vector<cocos2d::Point> st;
Vector< FiniteTimeAction * > fta;
.......
while (!st.empty()) {
auto des = st.back();
auto moveAction = MoveTo::create(des.distance(currentPos) / 34, des);
...
auto aniForever = RepeatForever::create(moveAnimation);
auto seq = Sequence::create(moveAction, CallFunc::create(CC_CALLBACK_0(Barbarian::stopAnimation, this, aniForever)), NULL);
auto spw = Spawn::create(aniForever, seq, NULL);
fta.pushBack(spw);
.....
st.pop_back();
}
auto seq = Sequence::create(fta);
sprite->runAction(seq);
这样,当 moveAction 完成时,它将调用 stopAnimation 来停止 aniForever。停止动画如下
void CharacterBase::stopAnimation(cocos2d::RepeatForever *ani) {
CCLOG("STOP ANIMATION");
sprite->stopAction(ani); }
但是我发现我的代码存在一些问题。 精灵在没有动画的情况下移动。
有人可以告诉我为什么并为我找到解决方案吗?谢谢大家
您的代码不完整,但似乎您应该将动画动作和运动动作分开。它们可以同时运行。试试这个伪代码:
//when you start moving
auto moveAnimation = createMoveAnimation();
sprite->runAction(moveAnimation);//start play move animation now
Vector< FiniteTimeAction * > fta;
while (!st.empty()) {
auto des = st.back();
auto moveAction = MoveTo::create(des.distance(currentPos) / 34, des);
fta.pushBack(moveAction );
st.pop_back();
}
auto endAnimation = CallFunc::create(CC_CALLBACK_0(Barbarian::stopAnimation, this, aniForever)//after movement stop movement animation
fta.pushBack(endAnimation);
//so far, you have created a list of moving actions and a stop animation call at the end
auto seq = Sequence::create(fta);
sprite->runAction(seq);//let the sprite move
相关文章:
- 如何将更多文件夹添加到c++include路径
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- C++A*算法并不总是在路径中具有目标节点
- 从函数角度看ID到文件路径的内部与外部映射
- boost xml parsingl将xml的路径作为变量发送
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 如何使用cppcheck处理半相对包含路径
- 在C++中设置基于操作系统的文件路径
- 基于编译器选项的编译二进制路径
- 按边长度递归搜索图中所有可行路径
- 使用变量值作为 PlaySound 中的路径
- 如何转换真实路径 CString c++
- 从 GUID 获取 USB 卷路径
- 查找 GCD:并非所有控制路径都返回值
- C++17 文件系统::remove_all 带有通配符路径
- 在带有尾部斜杠的路径上返回 std::filesystem::create_directories() 的值
- 获取当前正在运行的 exe 名称(不是路径)
- 如何从 Skia 路径几何体中获取网格?
- 在 Cocos2DX 中移动动画精灵和路径
- cocos2d-x 3.0 -创建精灵的相对路径