43235人加入学习
(204人评价)
【旧版】Unity初级案例 - 愤怒的小鸟

制作完成于 2018-1-22 本教程基于 Unity 2017.2开发

价格 免费

由于没有给小鸟做标签,导致无法触发受伤图片

[展开全文]

图片会按照默认ID进行排序,所以可能产生相反的动画效果

如果要手动调整图片顺序,在Ctrl+6后的窗口,

点击Boom Sprite左侧的展开箭头,在右侧对图片帧进行拖动调整

[展开全文]

//Spring Joint 2D弹簧接头组件 2D

Connected Rigid Body

选中此框可自动设置此关节连接到的其他对象的锚点位置。(选中此项而不是填写已连接的锚字段。)

Distance

弹簧应尝试保持两个对象之间的距离。(可以手动设置。)

Frequency

当物体接近您想要的分离距离时弹簧振动的频率(以每秒周期数测量):在 0 1,000,000 范围内 - 值越高,弹簧越硬

 

//刚体静态

Rigidbody 2D ->Body Type->Static

静态刚体2D 设计为在模拟下根本不移动;如果有任何东西与它发生碰撞,Static Rigidbody 2D 的行为就像一个不可移动的物体(好像它有无限的质量)。它也是使用资源最少的体型。静态实体仅与动态刚体 2D 碰撞。不支持让两个静态刚体 2D 发生碰撞,因为它们不是为移动而设计的。

[展开全文]

制作 Lose 界面UI

添加一个UI ,Image,填充满屏幕,设置透明度降低,添加一个渐隐的动画

在添加一个Image 放在中间,上下充满,,在这个 Image 下面添加一个 Button 按键,分别为重新开始和home 键

中间放一个Pig

制作 Win 界面UI

和失败基本相同,将猪换成

动画状态机和动画需要复制一份

给Win 添加一个脚本

 

 

 

 

 

[展开全文]

渲染层级关系

1. Camera  

Depth 深度 决定渲染顺序,先绘制 depth 低的物体(使用与多个摄像机渲染排序)

2.同一个 Camera

sorting layer  sorting 层大的先渲染遮挡 sorting 层小的

3.同一个 Sorting 层

Order in Layer :order 大的遮挡住 order 小的

将 Canvas 的render mode :修改为 Screen space 

 

 

[展开全文]

Collision.relativeVelocity 相对速度
两个碰撞物体的相对线性速度(只读)。
.magnitude
返回此向量的长度(只读)。

写在小猪脚本里,用碰撞体
collision2D.relativeVelocity.magnitude

[展开全文]


LineRenderer   线渲染器类
线渲染器用于在 3D 空间中绘制自由浮动线。
LineRenderer lineRenderer;
lineRenderer.SetPosition(0, 弹弓左边的坐标);
lineRenderer.SetPosition(1, 小鸟坐标);

[展开全文]

gamemanager里写 

如果赢了,

如果分数>高分,

播放三颗星动画

如果分数中间

播放两颗星动画

如果低分

播放一颗星动画

其他

播放

失败动画

[展开全文]

我是个弱智

摄像机跟特效sorting layer改了半天不显示 

 

发现原来是忘记把摄像机挂在canvas下了!!!

[展开全文]

在Canvas里面的游戏物体的顺序会影响的点击,后渲染的图层会覆盖先渲染的图层,例如在lose里面添加了点击事件,但是当失败的界面显示的时候点击图标无法触发事件,将lose的顺序拉到PausePanel后面的就可以了,原因是pausePanel的大小覆盖了真个Canvas,并且是后于lose渲染的,这样就导致弹出lose界面的时候里面的所有按钮都无法点击。

[展开全文]

public class Boom

public void destroying()

{

Destroy(gameObject);

}

 

class Pig

void Dead()

{

Destroy(gameObject);

Instantiate(boom,transform.position,Quaternion.identity);

GameObject go = Instantiate(score,transform.position+new Vector3(0,0.5f,0),Quaternion.identity);

Destroy(go,1.5f);

}

 

[展开全文]

 

 

创建场景三个

00-loading

01-level

02-game

 

导入image和sound文件

 

game场景

birds图片进行剪切成多个图片。

[展开全文]

添加碰撞体(实现交互):physics 2D.circle collider

添加脚本:新建script文件夹,新建脚本

onmouse函数:unity自动检测鼠标动作,并执行相应函数,如onmousedown,鼠标按下时执行该函数

update函数:实时监测

transform:当前对象

input:输入对象

worldpoint:当前对象的坐标系,屏幕中间

screen:鼠标坐标系,屏幕左下角

转化坐标:

transform.position=Camera.main.ScareenToWorldPoint(Input.mouseposition);

注意对象的z坐标变化:

transfrom.pisition+=new Vector3(0,0,Canmera.main.transfrom.position.z);

 

 

[展开全文]

因为在拖拽小鸟的过程中,小鸟的位置是由代码中的position自定义所确定,所以该过程中应该将小鸟设置为isKinematic

[展开全文]

死亡和加分特效

重新分配裁切大小

 

[展开全文]

弹簧的应用 不是很懂  为什么设置2下 需验证弹簧的用发    

 

[展开全文]

游戏逻辑的判定

场景中小鸟剩余的个数大于猪的数量我们就赢了

复制 bird 为三只

设置GameManager管理我们的小鸟

新建空物体作为 GameManager

public List<Bird> birds;

public List<Pig> pigs;

现在确定逻辑,当我们第一支小鸟还没有飞的时候,后面的小鸟的 Spring Joint 2D 和 Bird 组件要禁用

 

 

[展开全文]

授课教师

SIKI学院老师

课程特色

图文(1)
下载资料(1)
视频(44)