Android开发学习之UnIty3D重力感应

      今天想和大家分享的是基于Unity3D的重力感应。首先简单地说一下Unity3D,Unity3D是一个支持Windwos、Android、ios、Mac、WII等多平台类型游戏的开发环境,具备可视化的编辑窗口,可以快捷、方便地对游戏场景进行编辑,对DirectX和OpenGL具有高度的渲染能力,支持资源导入,支持物理引擎、支持光影特效、支持粒子系统,是开发跨平台游戏的首选工具。

      对于Unity3D,我接触地不算很多,今天算是第一篇文章吧,我们今天就以一个的重力感应实例来开始今天的学习吧!

      首先打开Unity3D创建一个新的项目,项目创建完后,我们在Assets文件夹下创建一个Resources的文件夹,这里必须是Resources,否则开发环境将无法识别其中的资源。然后我们导入一个小球的图片,命名为Ball。紧接着,我们创建一个Scripts的文件夹来存放脚本文件,此时项目结构应该是这样的。

Android开发学习之UnIty3D重力感应_第1张图片

    下面,我们在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上,绑定脚本,然后编译并在手机上运行,最终效果是这样的:

    Android开发学习之UnIty3D重力感应_第2张图片Android开发学习之UnIty3D重力感应_第3张图片Android开发学习之UnIty3D重力感应_第4张图片

      到目前为止,这个例子存在几个问题如下:

      1、虽然程序中对越界问题作了处理,但是在实际测试过程中,我们发现小球还是会向屏幕右侧和下侧移动甚至消失

      2、小球在手机屏幕上的坐标系统似乎和Unity3D是相反的

      3、由于采用2D贴图,因此小球一直处于静止状态,正常的情况下小球应该会滚动

      所以,对于这几个问题我目前还是很困惑的,如果大家知道的话,可以告诉我啊,今天的文章就是这样了(话说Android似乎不知道做什么了!),谢谢大家!



你可能感兴趣的:(Android开发)