14年5月份开始接触u3d,看过一些书籍和视频,发此文勉励自己吧。
Unity 4.5
版本:0.0.1.0
2014-6-29
Unity3D官网: http://unity3d.com
一。动画资源准备
所需图片格式为png。因为png图片能保存alpha通道,使背景透明。
可以直接在图片中绘制动画的每一帧,然后保存图片(绝对是画家才能做到的);
可以使用gif制作软件做出gif(不方便制作角色动作类动画),然后倒入PS,再将全部帧都放入一张png图片;
可以使用CG软件(3DSMax、Maya、Lightwave等)制作角色动画,导出序列帧,再用PS制作图片;
我从网上下载了一个gif动画,然后使用PS制作了可用的png图片。
二。Unity内转换图片
1.创建2D项目
2.将图片放入项目资源
3.类型转换
1)指定多帧动画图片
2)编辑Sprite
3)自动切分图片
4)手动切分
5)保存可用图片
三。动画制作
1.创建动画
保存动画后在项目面板自动创建2个文件
2.打开动画编辑器
3.替换帧
4.增加动画长度
1)复制动画
2)添加关键帧
3)修改帧频
5.位置动画
1)添加位置动画元素
2)修改位置
3)曲线动画
6.动画交互
1)创建脚本
1 2 3 4 5 6 7 8 9 10 11 |
using UnityEngine; using System.Collections; public class CScriptFly : MonoBehaviour { /**自定义函数**/ void doSomething() { Debug.Log("做点什么"); // 每当动画播放到事件所在帧,就执行一次 } } |
2)关联脚本到动画游戏体
3)添加事件
7.动画层
1)创建层
2)设置层
3)锁定层
8.动画游戏体的缩放
1)源动画图片缩放
2)场景内游戏体缩放
四。Native2D引擎
1.坠落碰撞示例
1)下落物体
2)静止物体
2.游戏体碰撞条件
3.手动添加力
指定一个具有刚体组件属性、碰撞器组件属性的Sprite游戏体,关联脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using UnityEngine; using System.Collections; public class addForce : MonoBehaviour { // 使用public修饰的变量可在属性面板修改 public float x_power = 0.0f; public float y_power = 100.0f; // 重写。在固定的时间间隔执行,不受游戏帧率的影响 void FixedUpdate () { // 点击鼠标左键 if (Input.GetMouseButtonDown(0)) { // 2D刚体施加力(2维方向的力(x,y)) rigidbody2D.AddForce(new Vector2(x_power, y_power)); } } // 每渲染新的一帧即调用。不同设备执行间隔可能不一样 void Update() { } } |
4.消息捕获
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using UnityEngine; using System.Collections; public class addForce : MonoBehaviour { public float x_power = 0.0f; public float y_power = 100.0f; // 刚体更新 void FixedUpdate () { if (Input.GetMouseButtonDown(0)) { rigidbody2D.AddForce(new Vector2(x_power, y_power)); } } // 重写。发生碰撞接触(引擎自动调用传参-发生碰撞的2D物体) // 刚体组件属性中没有勾选“Is Trigger” void OnCollisionEnter2D(Collision2D c2d) { // 不是OnCollision2DEnter // 如果被碰撞的物体具有2D刚体属性。这个rigidbody即Rigidbody2D if (c2d.rigidbody) { // 向被碰撞物体施加外力 c2d.rigidbody.AddForce(new Vector2(0, 200)); } // 只有碰撞器属性的被撞物体 else { Debug.Log("被撞了:" + c2d.gameObject); } } // 被碰撞的物体的碰撞器组件属性中必须勾选了“Is Trigger”才触发此事件 void OnTriggerEnter2D(Collider2D c2d) { // 碰撞器属性打开“Is Trigger”后不能阻挡 其它碰撞体(有碰撞器属性不管是否打开IS Trigger的物体) Debug.Log("两个物体发生接触,但会被穿透:" + c2d.gameObject); // 一旦接触即取消“Is Trigger”,被碰撞的物体又能阻挡下落的刚体碰撞体 c2d.isTrigger = false; } } |
五。关节
1.折页关节
2.距离关节
3.弹簧关节
4.滑块(滑动)关节
5.皮筋(轮子)关节
声明
本文由崔维友 威格灵 cuiweiyou vigiles cuiweiyou 原创,转载请注明出处:http://www.gaohaiyan.com/1229.html
承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设