今天想和大家分享的是基于Unity3D的重力感应。首先简单地说一下Unity3D,Unity3D是一个支持Windwos、Android、ios、Mac、WII等多平台类型游戏的开发环境,具备可视化的编辑窗口,可以快捷、方便地对游戏场景进行编辑,对DirectX和OpenGL具有高度的渲染能力,支持资源导入,支持物理引擎、支持光影特效、支持粒子系统,是开发跨平台游戏的首选工具。
对于Unity3D,我接触地不算很多,今天算是第一篇文章吧,我们今天就以一个的重力感应实例来开始今天的学习吧!
首先打开Unity3D创建一个新的项目,项目创建完后,我们在Assets文件夹下创建一个Resources的文件夹,这里必须是Resources,否则开发环境将无法识别其中的资源。然后我们导入一个小球的图片,命名为Ball。紧接着,我们创建一个Scripts的文件夹来存放脚本文件,此时项目结构应该是这样的。
下面,我们在Scripts文件夹下创建一个Controls.cs的C#脚本文件。主要代码如下:
using UnityEngine; using System.Collections; public class Controls : MonoBehaviour { private Texture2D ball; private float x=0.0F; private float y=0.0F; private float mX=0.0F; private float mY=0.0F; void Start () { mX=Screen.width-x; mY=Screen.height-y; ball=(Texture2D)Resources.Load("Ball"); } void OnGUI() { GUI.DrawTexture(new Rect(x,y,256,256),ball); } void Update () { x += Input.acceleration.x * 30; y += -Input.acceleration.y * 30; if(x < 0) { x = 0; }else if(x > mX) { x = mX; } if(y < 0) { y = 0; }else if(y > mY) { y = mY; } } }
到目前为止,这个例子存在几个问题如下:
1、虽然程序中对越界问题作了处理,但是在实际测试过程中,我们发现小球还是会向屏幕右侧和下侧移动甚至消失
2、小球在手机屏幕上的坐标系统似乎和Unity3D是相反的
3、由于采用2D贴图,因此小球一直处于静止状态,正常的情况下小球应该会滚动
所以,对于这几个问题我目前还是很困惑的,如果大家知道的话,可以告诉我啊,今天的文章就是这样了(话说Android似乎不知道做什么了!),谢谢大家!