Unity2D学习记录第三期
Unity2D学习记录第三期
一、镜头对象及其优化
在左侧的hierachy中是有main camera对象的,这就是游戏的镜头也就是你在游戏中能看到的画面的来由,默认的是固定的镜头,但是大多数时候镜头还是会移动的,所以这里就来学习一下如何制作
首先最简单的实现方法就是在摄像机中添加C#代码,直接将镜头对人物的位置锁死
public Transform player;
//z轴锁死
transform.position = new Vector3(player.position.x,player.position.y,-10f);
其次还有一种方式就是利用unity自带的一个摄像机工具包,它有非常方便的功能,限定范围,加速度跟随,镜头跟随等等
在package中搜索cinemachine包(电影机),特别注意下因为是unity的包所以要在unity registry中寻找,而不是在my assets中(我导入的包)
再导入这个包之后菜单栏里就会多处cinemachine的选项,根据你的项目需求来选择相机的类型,我这里用的是2D的相机
这就是创建的对象,它会覆写原有的main camera所以不需要对原有的相机做什么操作. 这个对象有自动添加一些组件功能,界面上就添加的其中一个组件,他的bounding shape 就可以规定相机的边界
tip:只能放入polygon collider,所以也记得给检测的对象添加上该类型的碰撞域
二、物品创建及其标签和显示
和之前创建主角类似,但是物品一般就只需要有idle动画就可以了
重要的是物品收集的碰撞检测,销毁和记录,还有根据物品标签在界面上显示内容
首先对于会有交互的物品需要对它的碰撞域的属性中勾选上is trigger来表示可以作为触发器,也就是可以交互的意思
下面是放在plater中的代码:
public int Cherry=0;
private void OnTriggerEnter2D(Collider2D collision){
if (collision.tag == "Collection"){
Destroy(collision.gameObject);
Cherry++;
}
}
不难看出代码的意思,注意OnTriggerEnter2D是自带的私有方法,这里对它进行覆写即可,检测的事情就不需要我们做了,我们只需要关注处理碰撞物即可.
为了显示物品数量就会触及到UI的部分
此处需要注意如果在player的C#文件中编程就需要引入UI引擎的命名空间也就是导入UI engine的包
这里着重介绍一下UI,首先最重要的就是UI是独立于游戏场景的所以UI的canvas会比场景大很多来做区分. 首先就是要建立canvas作为UI的画布再在此之上为其添加上更多的对象来丰富UI例如常用的Text,Button等等
三、制作模板
对于重复利用的相同内容的对象,你可以通过在hierachy中直接拖拽到下方的文件夹中制作一个模板,一般将这个文件夹命名为Prefabs意为预组件
在这之后你都可以使用这个模板来生成新的对象
而实际上这就相当于是父对象,而用这个模板生成的都是子对象,所一父对象更改之后子对象也会跟着更改非常方便,而子对象也可以拥有自己的特点
这是一个很重要的功能,所以在这里单独作为一个小节讲述.
四、材质
collider中有材质material的属性,可以设置材质的参数来实现一些物理效果
同样需要创建一个physical material 文件来放入其中,当然也可以用模板来方便之后的使用,同样的道理之前提到的收集物也可以使用模板
五、总结
现在看来写博客还是挺麻烦的所以这个系列更多的还是作为我的学习笔记吧. 这里更多的是记录一些概念上的内容,所以这些概念就是一些我抽象总结出来的内容,内容之间也比较独立. 但是我觉得如果读者有面向对象的基础以及游戏经验的话应该还是能有所帮助来建立一个比较大纲型的认知.