今天想和大家分享的是基于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;
}
}
} 然后我们将这个脚本拖放到Camera上,绑定脚本,然后编译并在手机上运行,最终效果是这样的: ![]() ![]() ![]()
到目前为止,这个例子存在几个问题如下:
1、虽然程序中对越界问题作了处理,但是在实际测试过程中,我们发现小球还是会向屏幕右侧和下侧移动甚至消失
2、小球在手机屏幕上的坐标系统似乎和Unity3D是相反的
3、由于采用2D贴图,因此小球一直处于静止状态,正常的情况下小球应该会滚动
所以,对于这几个问题我目前还是很困惑的,如果大家知道的话,可以告诉我啊,今天的文章就是这样了(话说Android似乎不知道做什么了!),谢谢大家!
|