Unity是什么:
它就是一个2D/3D编辑器,同时又是一个游戏引擎
游戏引擎:使用者只需要调用这些功能,而不需要重写实现这些功能
第一步:资源导入与资源处理
资源导入的方法:
-

-
直接将资源拖入Project面板
资源处理
2D游戏总的来说是依靠Sprites(图片精灵)

Sprite的类型
Default——默认纹理类型
Normal map——法线贴图资源
Editor GUI and Legacy ——用户界面的特图资源
Sprite——图片精灵
Cursor——鼠标光标
Cookie——光斑
Lightmap——光照贴图
Directional Lightmap——方向光贴图
Single Channel——单通道纹理
主角图片的创建

首先要将Single(单张图片) 变为Multiple(多张图片)
然后点击Sprite Editor 进行图片编辑

对图片进行分割
Automatic 自动
Grid By Cell Size 按照每一格像素切割
Gird By Cell Count 按照图片的数量切割

透明模式与颜色模式
场景创建

场景的层级关系
不同的图片处于不同的层级
Sorting Layer 层级的设置
Order in Layer 层级的优先级
1、
同一层级的图片,优先级越大,图片越处在前面
2、

添加新的图层,越在下的图层就越在前。
项目开始:快捷Ctrl+P
主角组件创建

增加组件

2D物理组件

2D刚体

圆形碰撞器
场景组件创建

添加Colider(碰撞器)

编辑编辑器
第二步:添加代码脚本
设置代码编辑器:


常见的MonoBehaviour类的消息

快捷使用unity的各类方法(消息)


- 点击屏幕时,使Bird能够飞翔
if (Input.GetMouseButtonUp(0))//Input为unity的一个类,调用这个类中的GetMouseButtonUp()的方法 ,检查鼠标是否按下。(0位左键,1为右键)
{
rb2d.velocity = Vector2.zero;//将速度设置为0,每一帧的速度都为0
rb2d.AddForce(new Vector2(0, 360));//添加一个向上的力
}
2.小鸟碰撞与死亡
bool isDead=false;
private void OnCollisionEnter2D(Collision2D collision)//碰撞检测
{
isDead = true;
}
碰撞有三种状态
1、OnCollisionStay2D 碰撞进行
2、OnCollisionEnter2D 碰撞开始
3、OnCollisionExit2D 碰撞退出
思考题
1、Unity引擎是如何知道我们的脚本中没有写特定名字的方法的?又是如何调用的?
通过反射,查找特定的名字
通过反射直接调用该方法
2、能否将碰撞处理放在Ground对象上?
能
private void OnCollisionEnter2D(Collision2D collision)
{
//collision.gameObject.GetComponent<SpriteRenderer>().enabled = false;//获得碰撞体的SpriteRenderer组件,并启用状态设为关闭
collision.gameObject.GetComponent<Bird>().isDead = true;//将碰撞体的Bird组件的isDead设为ture
}
3、一个对象A的子对象B发生1碰撞,A会不会收到碰撞信息
1、如果父节点和子节点都有Rigidbody,就相当于两个独立的物体,各自碰各自的。
2、如果父节点有Rigidbody,子节点没有,子节点相当于父节点的一部分,就看在谁的身上有响应的接口,在父节点有响应接口,父节点响应,子节点有接口,子节点响应,两者都有接口,父节点不会影响到子节点,但子节点响应会让父节点也响应。
3、如果父节点没有Rigidbody,子节点有,子节点会响应,父节点没有响应。
GameObject 和gameobject的区别
GameObject是Unity场景中所有实体的基类,是一个类型
gameobject是一个对象,就和this一样,指这个脚本所附着的游戏物体
第三步 动画创建
1、选中游戏对象

2、创建动画并命名


动画控制器

游戏对象上Animator都会有一个动画控制器

动画片段
3、动画制作
打开动画片段后,选中游戏对象
进入动画编辑界面

5236

被折叠的 条评论
为什么被折叠?



