(NO.00003)iOS游戏简单的机器人投射游戏成形记(十六)
回到MainScene.m中添加selectRobot方法:
-(void)selectRobot:(Robot *)robot{
LevelRestrict *lr = [LevelRestrict sharedInstance];
for (Robot *r in lr.robotsInLevel) {
if (r != robot) {
r.isSelected = NO;
}
}
}
代码逻辑已经说过了,将LevelRestrict中机器人数组修改为正确的状态:反选其他所有的机器人.
添加MainScene的触摸回调已支持用户在屏幕上触摸,我们一个一个方法看,首先是touchBegan方法:
-(void)touchBegan:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
CCLOG(@"%@",NSStringFromSelector(_cmd));
_touchPoint = [[CCDirector sharedDirector] convertTouchToGL:touch];
}
这个和Arm的类似,下面是touchMoved方法:
-(void)touchMoved:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
CGPoint location = [[CCDirector sharedDirector] convertTouchToGL:touch];
LevelRestrict *lr = [LevelRestrict sharedInstance];
//如果当前选中了一个robot
Robot *robot = lr.selectedRobot;
if (robot) {
MoveDirection direction = armMoveDirectionDown;
if (location.y > _touchPoint.y) {
direction = armMoveDirectionUp;
}else if (location.y < _touchPoint.y){
direction = armMoveDirectionDown;
}
[robot moveArm:direction];
}
}
该方法主要逻辑为,如果当前选中了一个机器人则取得其手臂需要转动的方向,然后给robot发送moveArm消息以转动手臂.
最后是touchEnd方法:
-(void)touchEnded:(CCTouch *)touch withEvent:(CCTouchEvent *)event{
LevelRestrict *lr = [LevelRestrict sharedInstance];
Robot *robot = lr.selectedRobot;
if (robot) {
[robot armShoot];
}
}
在玩家接触触摸时发射子弹.这个和Arm的发射子弹的逻辑是一样的.
(NO.00003)iOS游戏简单的机器人投射游戏成形记(十六)的更多相关文章
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(一)
这是一个简单的机器人投射游戏,主要来熟悉物理引擎的一些东西.你可以把它认为是机器人投篮;尽管投出的是抛物线,但不是篮球而是子弹,速度也较快. 游戏玩法是玩家选择机器人,移动机器人手臂瞄准篮框,然后发射 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十八)
在游戏中制作手臂瞄准线,也就是所谓的辅助延长线.玩台球游戏的童鞋应该可以了解. 按道理来说,延长线是一个物理实体,遇到物理刚体应该会发生反弹行为,这个符合实际游戏逻辑. 但是这里为了简单,只是做一条& ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(九)
现在按住手臂可以非常自然和舒服的旋转了,丝般顺滑:移动停止,旋转立即停止,没有什么惯性影响了. 以上一共介绍了2中旋转方式,到底采用哪种方式呢?其实看实际游戏的需求和个人的喜好了.本猫在Level中添 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十三)
好了,现在在iOS模拟器中编译运行App,一切貌似都很好. 且慢,我们还没有到真机上调试呢?按说在编写App'时,无论如何应该尽快尽早在真机上调试.否则可能会碰到意想不到的问题,这次就是如此. 在真机 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(七)
因为到目前为止我都是在iOS模拟器中测试,但即便如此,也觉得按住手臂旋转时,手臂转动起来比较费劲,很难停止在玩家期望的位置上.因为手臂完全通过物理引擎的计算来移动,它有自身的惯性影响,所以很难控制. ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(五)
上一篇我们建立了机器人物理对象,下面我们来看看对应的逻辑代码. 进入Xcode,新建Robot和Arm类,分别继承于CCNode和CCSprite类.代码全部留空,后面再实现. 我们再看一下这个机器人 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(四)
上篇说道要想将手臂固定在机器人身体上,而且手臂还能转动,简单的办法是使用物理关节.但这不是只有这种办法.用关节固定物体有时候不能满足需要,这时必须自己动手写代码处理,后面会介绍另一种固定的方法. 在S ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(三)
接下来我们建立机器人对象. 在Sprites文件夹中新建Robot.ccb文件,类型为Node. 打开SpriteBuilder的Tileless View将机器人身体和手臂拖入根节点,调整好相对的位 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二)
打开Ai按需求依次绘制机器人身体,手臂和篮框: 因为是实验性质的游戏所以没必要在这上面花太多功夫,画出意思即可.虽然是2D游戏,但实际游戏中可以表现出伪3D的图形效果;尽管本猫这次画的游戏元素都是满满 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(二十一)
回到Xcode中,在MainScene.h接口中添加碰撞协议: @interface MainScene : CCNode <CCPhysicsCollisionDelegate> //. ...
随机推荐
- jquery form submit提交后无反应 不报错
jquery form onSubmit默认返回false 因为页面添加了validate验证,在刷新页面后重新提交需要加上下一行代码 onSubmit:function() {return true ...
- 18. 4Sum(中等)
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...
- Lintcode389 Valid Sudoku solution 题解
[题目描述] Determine whether a Sudoku is valid. The Sudoku board could be partially filled, where empty ...
- [HCNA]VLAN配置Hybrid接口
实验名称 VLAN配置Hybrid接口 日期 2018年4月13日 实验目的 1.掌握配置Hybrid接口的方法. 2.理解Hybrid接口处理Untagged数据帧过程 3.理解Hybrid接口处理 ...
- ajax跨域请求问题及解决办法总结
1.浏览器的同源策略及规避方法 目前,所有浏览器都实行同源政策.即协议.域名.端口都相同的URI称为"同源".不同源的url之间: a.无法读取cookie.localstorag ...
- VSCode 插件推荐
vscode-icons 用于项目中文件类型显示对应的图标,提高文件定位的效率. vscode-tslint 用于 TS 的规范检测 Path Intellisense 用于提示导入文件时候的路 ...
- Docker配置 DNS
Docker 没有为每个容器专门定制镜像,那么怎么自定义配置容器的主机名和 DNS 配置呢? 秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件. 在容器中使用 mount 命令可以看到挂载信 ...
- PTA中提交Python3程序的一些套路
0. FAQ 0.1 提交后提示"答案错误"或者"格式错误" PTA检查答案正确与否是通过字符串匹配实现的.所以可能有以下几种原因: 格式错误:程序的输出要与题 ...
- Redis Cluster架构优化
Redis Cluster架构优化 在<全面剖析Redis Cluster原理和应用>中,我们已经详细剖析了现阶段Redis Cluster的缺点: 无中心化架构 Gossip消息的开销 ...
- 优先使用TimeUnit类中的sleep()
TimeUnit是什么? TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段 ...