借鉴Temple Run的重力感应控制和手势操作的设计改进

本文分析了一款类似TempleRun的游戏操控问题,并提出改进方案。针对重力感应导致的角色难以精确控制及手势滑动存在的操作延时问题,提出了将手机倾斜度映射到道路宽度及在touch事件begin阶段判断滑动方向的方法。

猴子原创,欢迎转载。转载请注明出处,谢谢!

原文地址:http://blog.youkuaiyun.com/yanghuiliu/article/details/7615066

前一段时间,开发的一款类似Temple Run的跑步游戏,总感觉自己的重力感应左右滑动和手势的上下滑动操作没有Temple Run好操作。自己观察了一下Temple Run,发现自己的设计的确存在不足。

先说下我自己的设计吧。


1、在重力感应的设计:

我是把左右倾斜的重力感应值传递到游戏控制中,也就是说,我手机向左倾斜,玩家会不停的向左移动,我手机向右倾斜,玩家会不停的向右移动。

看上去没有什么问题,但是在类似Temple Run的游戏中,这就存在极大的不足。

不足之处:

玩家只要把手机左右倾斜,游戏角色就会不停的左右移动,玩家找不到一个合适的控制点,就是想把角色控制在一条道的左中右很难。(虽然玩家小幅度倾斜时,我不算作左右移动,但是还是很难控制)。

2、在手势上下滑动的设计:

Touch事件分为begin,move,end。我是在end的时候获取当前手指的坐标A以及上一帧的手指坐标B,通过A.y和B.y的差值区分玩家是上滑还是下滑。

我只能说,这个看上去也没问题。

不足之处:

不足之处就是玩家操作存在延时,玩家在看到前方有障碍物的时候,快速反应上滑手指,玩家想看到的是我手指点上去角色就应该跳动,但是程序上要等到玩家手指离开的时候才知道是上滑操作还是下滑操作。所以存在一定的延时。


自己的不足分析了,那么怎么改进呢?

其实玩玩Temple Run就可以找到答案。

1、重力感应的改进方式:

重力感应应该是将手机的左右倾斜度映射到一条道路的宽度上去,这样玩家倾斜一定角度的手机,只是将游戏角色定位到一条到道的某一点上去,玩家可以很容易的控制角色在一条道的某一点上面。


2、手势滑动的改进:

刚才也说了,手势分begin,move,end。方法还是和之前一样,只不过不是在end里面获取方向,而是当触发begin的时候记录手指坐标A,在move的第一帧就记录手指坐标B,通过A.y和B.y的差值区分玩家是上滑还是下滑。看上去没什么区别,区别就是减少了玩家move的这段时间的延时。也就是达到对了玩家希望看到的一点击屏幕,角色就应该上跳还是下滑。


我想到的改进就是这些,可能还有不足之处。大家可以留言说下自己更好的方法,一起学习学习嘛.....

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值