Unity3D 2D入门——第5天

第4天让狗吃了大笑.....


今天我们终于走到了正点上:关于C#脚本中对对象的基本操作

我们先推荐一个博主:大学霸,这是链接

http://my.oschina.net/u/1585857/blog?catalog=470833&p=2&temp=1468725572314

他列表中2015年有许多关于Unity3D的东西可以看


然后再推荐另外一个博主,脱莫柔,她貌似一直在做Unity3D方面的东西,下面是链接

博客园(搬家前)

http://www.cnblogs.com/fortomorrow/

CSDN(搬家后)

http://blog.csdn.net/asd237241291


今天完成的内容很简单,在下面这篇博客里完全包含:

http://www.cnblogs.com/fortomorrow/archive/2012/10/30/unity05.html


一、物体的移动、缩放、旋转

移动很简单,为物体添加刚体组件,然后在脚本的 Start() 方法中添加如下代码,即可完成速度的设置,程序会自动运行它的运动过程

GetComponent<Rigidbody2D>().velocity = new Vector2(-1, 0);
缩放和旋转则不一样,是通过对物体的 transform 属性进行修改完成的,所以都放在了 Update() 方法下面,代码如下

transform.Rotate(new Vector3(0, 0, 3)); /// 完成旋转,这个 x, y, z 分别指的是
					/// 绕 “对应轴” 旋转的角度
					/// 我做的是2D的,所以都是绕着 z 旋转的

transform.localScale += 0.001f*(new Vector3(1, 1, 0));  /// 完成缩放
							/// 同样,向量中 X,Y,Z 分别为对应轴的缩放

这里来说明下不放在 FixedUpdate() 中,因为 FixedUpdate() 方法是物理引擎更新的地方,也就是说如果要修改上面的速度的话,就应该放在 FixedUpdate() 里头,因为是物理引擎中“刚体”的属性。


二、输入的获取

1.输入指定按键

//按下键盘“上方向键”
if(Input.GetKey ("up"))
  print("Up!");

//按下键盘“W键”
if(Input.GetKey(KeyCode.W);)
  print("W!");

也就是说,对于按键的判定为 bool 型。

2.鼠标控制

//按下鼠标左键(0对应左键 , 1对应右键 , 2对应中键) 
if(Input.GetMouseButton(0))
  print("Mouse Down!");
Input.GetAxis("Mouse X");//鼠标横向增量(横向移动) 
Input.GetAxis("Mouse Y");//鼠标纵向增量(纵向移动)
对于鼠标按键的判定也是 bool 型。

倒是获取鼠标位移还算正常,返回值为?int?

3.获取轴:

//水平轴/垂直轴 (控制器和键盘输入时此值范围在-1到1之间)
Input.GetAxis("Horizontal");//横向 
Input.GetAxis ("Vertical");//纵向

返回值类型???


鼠标和获取轴没做,不要怪我,我也很努力的在完成另外一个问题,暂时没有解决。等解决了自然会把这里补上的,今天就这些,苦逼的周日的下午,一直没找到解答。。。。。


(续)终于解决了这个问题,先给链接,再进行描述:

http://blog.okbase.net/unity3d/archive/4611.html

非常感谢这位仁兄给的教程,顺便吐槽下百度。。。真的不行,搜索 Sprite.Create 失败,竟然全都是 Sprite.Create 怎么用,哼,最后还是依靠了 Bing 和yaHoo 走回来的,我都跑 Unity 论坛上去发帖了,大哭


为题描述如下:我要做动画,而我希望的完成方式是,有N幅图像,每隔一段时间切换一张,用这种非常原始的方式完成动画

我的环境:VS2013 + Unity3D 5.3


那么首先,我的资源是这样的



拖入 Unity 的资源管理器后,是这样的


然后呢,我希望它是3帧的,处理一下,在右上角将 Sprite Mode 修改为 Multiple(多精灵),然后点击下图中 Sprite Editor 进行处理(它会提示是否保存,点击保存,因为刚刚修改为Multiple了)


进入 Sprite Editor 后,如下图,左上角 | slice ♦ | Trim|,点开 slice,就可以看到左上角弹出窗口了,点击 Slice即可完成自动分割,图中可以看到我分割的结果,三个圆都有一个矩形框。右下角弹出窗口是选中框的状态信息。


退出 Splice Editor,点击应用即可,那么,图片处理好了,我们在 Project 创建一个 C#脚本,双击即可打开 VS,代码如下

public class StateCake : MonoBehaviour {

	public int num = 0; /// 选择图片序号
	public int counter = 0; /// COUNTER 计数器
	public Sprite[] sprites; /// 这个就是存储我们刚刚处理的几张图像的地方,精灵数组
	private SpriteRenderer render; /// 这个是存放渲染器的地方

	// Use this for initialization
	void Start () {
		render = GetComponent<Renderer>() as SpriteRenderer; /// 初始化时,我们获取对象的渲染器
		
	}
	// Update is called once per frame
	void Update () {
		counter += 1;
		if(counter>60)
		{
			counter = 0;
			num += 1; 
			if(num>2)
			{
				num = 0;
			}<span style="font-family:Arial, Helvetica, sans-serif;"> /// 前面是用来选择图片的代码</span>
			else if(0 == num)
			{
				render.sprite = sprites[0]; /// 选择精灵,赋值给渲染器
			}
			else if(1 == num)
			{
				render.sprite = sprites[1];
			}
			else if (2 == num)
			{
				render.sprite = sprites[2];
			}
		}
	}
}
代码很明朗,就是切换三个图片的。保存关闭VS,回到Unity。接下来在Hierarchy创建一个 2D Object -> Sprite,我们取名为 StateCake,然后将脚本拖拽并放到它上面。可以看到 StateCake 现在就有这些组件:

首先是没有标红的 Transform 组件,就是前面操作旋转和缩放的组件,

然后是 Sprite Renderer,就是代码里面初始化时获取的渲染器组件,那么 Sprite 属性值,就是更新中我们赋值的那个属性了

最后是 State Cake 组件,可以看到标注了 ( Script ),就说明是脚本组件了。看底下的参数,正是我们定义的 Num, Counter,以及 Sprites(尺寸暂时为0)。

接下来就是最最最关键的一个步骤了,为了这个步骤我可是折腾了一个下午。点右上角的锁定,那么当你切换选择时 Inspector 保持在 StateCake对象上。后面的操作看下面的图,边看边讲:


刚刚制作的图,右边有个三角点开,选择全部三个图片(红框内:选择第一个,按住shift,再选择最后一个)

然后,拖拽到右边蓝色区域内,则会自动添加进去(就这个拖拽!拖拽!拖拽!一下午加上一晚上啊大哭

然后可以看到右边红框内,就添加进去三个图片了,此时运行程序,就可以看到饼在变了。


终于搞定了,好开心,好充实的一天。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值