在游戏中制作手臂瞄准线,也就是所谓的辅助延长线.玩台球游戏的童鞋应该可以了解.
按道理来说,延长线是一个物理实体,遇到物理刚体应该会发生反弹行为,这个符合实际游戏逻辑.
但是这里为了简单,只是做一条”傻傻地”线而已,上面憧憬中的反弹延长线有机会以后游戏中再来实现.
用Ai绘制一条长度适合的虚线:
打开SpriteBuilder,将其拖入arm中,使其成为arm的子节点,这样,它自动会跟着父节点旋转,不需要写额外的代码了.
设置其代码连结名称为_dash,默认为不可见.
回到Xcode,在Robot.m中添加实例变量:
CCNode *_dash;
有童鞋可能感到不解,dash是arm的子节点,为什么你在Robot类里添加_dash实例变量呢?因为SpriteBuilder中我们选择_dash的类型是Doc root var哦:
我们延长线的行为如下,中有当选中一个机器人,并且旋转arm时才显示延长线,当触摸结束后延长线不显示.
因为我们有2种方式来旋转arm所以需要在Robot中和GameScene中的触摸moved和end方法中开启和关闭延长线,在Robot.h接口中新建2个方法:
-(void)moveArmFinish;
-(void)moveArmBefore;
在Robot.m中实现两个方法,很简单:
-(void)moveArmFinish{
_dash.visible = NO;
}
-(void)moveArmBefore{
_dash.visible = YES;
}
接下来只要在需要显示和关闭显示延长线的地方调用方法即可,这个就不在贴出了.
编译,运行游戏,效果如下:
大家顺便可以看到该Level中右边篮筐销魂的走位,这个不是用代码Action写的,而是仅仅用SpriteBuilder自身的动画完成的,没有写一行代码,我们下一篇就来看看怎么实现它 ;)