Himi 原创, 欢迎转载,转载请在明显处注明! 谢谢。
原文地址:http://blog.csdn.net/xiaominghimi/archive/2011/01/19/6153396.aspx
今天群里一哥哥说急需关于物理游戏方面的资料,so~下午就随手写了一个简单的圆形自由落体Demo,正好一起分享给大家学习下吧;
先大概说一下,之前的文章中,给大家介绍过重力传感器,那么和今天要说的重力系统,其实是一样的!
在重力传感器中,虽然我也实现了一个圆形会根据手机反转的角度而拥有不同的速度,但是其内置加速度算法都是Android os封装好的,而今天我们要讲的重力系统就是去模拟这个加速度,从而让一个自由落体的圆形,感觉跟现实中的皮球一样有质有量!下落的时候速度加快,反弹起来以后速度慢慢减下来~
OK,先上两张截图,然后简单介绍之后进行讲解:
Demo:简介:(咳咳、玩的有点H,狂点按钮搞的满屏都是 - -)
当你点击模拟器任意按键的时候会随机在屏幕上生成一个随机大小、随即颜色、随即位置、不停闪烁的一个圆形,并且圆形都拥有重力,在做自由落体,当圆形触到屏幕底部的时候会反弹,并且反弹的高度一次比一次低!
这个实例中,为了好看,我没有让圆形最终慢到停下来,会一直在一个高度进行的反弹,下落;
还有一点:对于圆形当从一个高度自由落体的时候可能它在X坐标系上没有发生改变,当然这是在我们代码中,属于理想状态,因为现实生活中,一般X/Y坐标系都会有变动,在此Demo中,我主要把垂直下落并且反弹的功能做出来了,关于水平的加速度我没做,第一是因为和垂直的处理思路基本一致,第二点我没时间 - -...
好了 不废话!先介绍一下我自定义的圆形类:
MyArc.java
代码比较简单主要讲解下几个备注:
备注1:
估计有些同学看到这里有点小晕,我解释下,大家都知道自由落体的时候,速度是越来越快的,这是受到加速度的影响,所以这里我们对原有的圆形y速度基础上再加上加速度!
备注2:
虽然加速度影响了圆形原有的速度,但是我们的加速度也不是恒定的,为了模拟真实球体的自由下落,这里我们不仅对加速度增加了偏移量ACC,而且我们还要对其变化的规律进行模拟,让下次的加速度偏移量成倍增加!所以为什么要for循环的时候把加速度的值当成for循环的一个判定条件!
好了,下面来看我们SurfaceView!
OK,代码都很简单,也很清晰! 稍微说一句:像MyArc里面也有类似MysurfaceView中一样的方法 logic() 以及draw()这样是更好的管理我们的代码结构,清晰思路,让该干什么的就去干什么,这样省的乱~
源码下载地址:http://download.csdn.net/source/2992517
补充下://备注1 这里!有的童鞋说for循环可以简写:这我就要提示各位童鞋了~
for (int i = 0; i < count; i++) {
vertical_speed += ACC;
}
以上代码确实可以用一句来表示:
vertical_speed +=ACC*count; 或者 vertical_speed =vertical_speed +ACC*count;
但是要注意:因为我这里变量都是浮点数,大家都知道对于浮点数有位数的限制,那么我这里用for来写可以避免乘积,如果简写的形式会有造成得到的结果有差异!!!!所以要注意;
还有千万不要简写成vertical_speed =(vertical_speed +ACC)*count; 这是错误的!
分享到:
相关推荐
"Android游戏开发实例源代码"这个资源提供了一手的学习材料,让开发者能够通过实际的项目代码来深入理解游戏开发的过程。这里我们将详细探讨相关知识点。 首先,Android游戏开发通常基于Java或Kotlin语言,这两种...
在 Android 游戏开发中,使用物理引擎有三个比较好的选择:JBox2D、Havok 和 LibGDX。其中,LibGDX 使用 JNI 封装了 Box2D,速度和易用性都不错。 下面,我们将详细介绍如何在 LibGDX 中使用 Box2D。 首先,我们...
在Android平台上,3D游戏开发已经变得越来越普遍,为用户带来了更为丰富和沉浸式的游戏体验。本书《Android3D游戏开发技术详解与典型案例全》旨在深入解析这一领域的核心技术,并通过具体的案例来展示如何将理论应用...
此外,Android还支持使用Unity、Cocos2d-x等跨平台游戏引擎,这些引擎提供了更高层次的抽象,让游戏开发变得更加便捷。 然后,游戏的物理引擎和碰撞检测是实现游戏逻辑的重要部分。学习如何使用Box2D或者JBox2D这样...
在Android游戏开发领域,Android 2.0是一个重要的里程碑,为开发者提供了更多功能和优化,使得游戏开发变得更加高效和有趣。本资源是《Android2.0游戏开发实战宝典》一书的源代码,旨在帮助读者深入理解Android游戏...
LibGDX,作为一款强大的开源游戏开发框架,为Android游戏开发者提供了丰富的工具集和灵活的架构,使得构建高性能的游戏变得轻而易举。这个压缩包中包含了使用LibGDX引擎制作的小游戏源码,为学习和理解LibGDX的工作...
JBox2D使得在Android平台上实现复杂的物理效果,如重力、碰撞检测、弹性运动等变得相对简单。 首先,了解JBox2D的基本概念是非常必要的。在JBox2D中,游戏世界被分割成多个小的可交互对象,这些对象被称为“身体”...
2. **Android Studio**: Google推荐的官方IDE,提供了一整套集成工具,如代码编辑器、调试器、模拟器等,让游戏开发变得更为便捷。 3. **Java或Kotlin编程**: Android系统主要支持Java和Kotlin语言。Java是传统的...
这个教程全集将带你逐步了解如何利用LibGDX来开发一个完整的游戏。 首先,让我们从基础开始。LibGDX的核心组件包括Stage(舞台)、SpriteBatch(精灵批次)、Texture(纹理)和Sprite(精灵)。Stage是场景的容器,...
- **强大的编辑器支持**:内置的编辑器工具让设计变得更加直观。 ##### 3. LUA脚本语言概述 LUA是一种轻量级的脚本语言,常被用于游戏开发中的逻辑控制。它易于学习且执行效率高,非常适合用来编写游戏逻辑代码。...
它支持跨平台开发,包括iOS、Android、Web等,拥有直观的可视化编辑器和强大的脚本系统,使得游戏开发变得更加便捷。 2. **游戏机制**:游戏玩法借鉴了《Escape Masters》,玩家通过在游戏场景中挖洞,设置陷阱,以...
同时,Cocos2d-JS的事件系统使得响应用户输入和游戏事件变得简单,如触摸事件、键盘事件等,这对于游戏的交互设计至关重要。 在Cocos2d-JS中,动画是游戏生动性的关键。通过序列帧动画(SpriteSheet)和动作组合,...
AndEngine是一款专为Android平台设计的游戏开发框架,它简化了2D游戏的创建过程,让开发者无需深入理解底层图形库,就能快速构建出高质量的移动游戏。本示例旨在介绍如何利用AndEngine进行游戏开发,通过实例化引擎...
Angle v1.0是一款专为Android平台设计的2D游戏引擎,它提供了高效且易于使用的框架,用于构建高质量的移动游戏。...如果你是一个对Android游戏开发感兴趣的程序员,这个源码库将是你宝贵的参考资料。
尤其在游戏开发方面,Android提供了丰富的API和工具,使得游戏开发变得更加便捷。本篇文章将深入探讨一个基于Rokon游戏引擎的Android应用源码,帮助读者理解Android游戏开发的核心概念和技术,并为毕业设计提供参考...
3. **物理引擎**:游戏中的物体碰撞、重力效果等物理现象可以通过Unity内置的物理引擎来实现,这有助于增加游戏的真实感和互动性。 4. **UI设计与交互**:良好的用户界面和操作体验对于提升游戏吸引力至关重要。...
此外,Cocos Creator的事件系统使得游戏逻辑的编写变得简单。开发者可以通过监听和触发事件来处理用户输入、游戏状态改变等情况。例如,玩家点击屏幕时,豆腐女孩执行跳跃动作,这可以通过绑定触摸事件和执行相应...
2. **多线程编程**:为了提高游戏的响应速度和流畅度,多线程编程技术变得越来越重要。C#提供了丰富的多线程支持,包括Task并行库、线程池等高级特性。 3. **网络编程**:随着网络游戏的发展,网络编程成为了必不可...
cocos2dx 3.2的精灵和图层系统使得赛道构建变得简单。 - **车辆模型**:3D建模技术用于创建逼真的赛车模型,通过动画系统控制车辆的行驶、漂移、碰撞等动作。 - **物理模拟**:利用Box2D引擎,实现车辆与赛道之间...
Android Studio的Gradle构建系统使得这一过程变得相对简单。 三、游戏世界创建 1. 初始化世界:首先,你需要创建一个`World`对象,这是所有物理实体存在的容器。通过指定重力向量(通常为向下)和一个布尔值决定...