当前位置:   article > 正文

Unity2D学习-官方游戏示例_unity2d场景

unity2d场景

今天开始学习Unity
使用的Unity版本
在这里插入图片描述
学习视频是BiliBili的Unity2D官方入门教程Ruby Adventure 完整版

首先是配置环境,需要关联Unity和VSCode
参考文章
安装了如下俩插件
在这里插入图片描述

常用快捷键

快捷键Q–Hand(手形)工具 可以平移整个Scene视图
快捷键W–Translate(移动)工具 移动所选择的游戏对象
Ctrl+N–New Scene 新建场景
代码块上一行/// 注释
Ctrl+6 打开动画面板
其他可以参考[快捷键文档]
(https://blog.csdn.net/qq_35867189/article/details/126302974)

切割图片为瓦片

以这张图片为例, 初始并未切割为瓦片
在这里插入图片描述
操作如下

  1. 修改属性Sprite Mode为Multiple,点击Apply
  2. 点击Sprite Editor按钮打开编辑弹窗
  3. 在Slice下拉框中修改Type为Grid By Cell Count,并修改数量为3x3,并点击Slice按钮进行切割
  4. 点击弹窗右上角Apply按钮,关闭弹窗,切好了
    请添加图片描述

将瓦片添加到场景中

  1. 首先要打开Tile Palette瓦片调色板窗口(Window-2D-TilePalette)
  2. 新建一个调色板放到/Assets/Tiles下
    在这里插入图片描述
  3. 将瓦片图集拖到调色板上,同样保存到/Assets/Tiles下
    在这里插入图片描述
  4. 选择调色板中笔刷工具,选中其中一块瓦片,就可以绘制到场景中了
    在这里插入图片描述
    在这里插入图片描述
    但是瓦片并没有占满一格
    因为整张图片大小为192x192,切割后每个瓦片就是64*64
    100的格肯定占不满
    解决方法就是将单元格大小改为瓦片大小64
    请添加图片描述

精灵添加碰撞

人物精灵需添加刚体
需要把重力改为0,不然会下坠
需要冻结z轴旋转,不然碰撞后会旋转
请添加图片描述
之后再添加一个Box Collider 2D组件,可以编辑碰撞盒大小和位置

瓦片添加碰撞

在Tilemap节点下添加碰撞组件
请添加图片描述

不需要碰撞的瓦片,直接在瓦片资源配置
请添加图片描述

但是如图,池塘里的每一块瓦片都有一个碰撞盒,很消耗性能,可以在Tilemap再添加一个Composite Collider 2D组件,并在碰撞盒组件下选择合并选项,合并在一起的碰撞盒

请添加图片描述
请添加图片描述
需要注意,添加合并碰撞组件后会自动添加刚体组件,需要将刚体设置为静态的,不然一碰就地震了hhh
请添加图片描述

上树了怎么办

请添加图片描述
A: 修改层级排序设置(Edit-Project Settings-Graphics)
修改为以y轴进行排序
请添加图片描述

修改精灵锚点

想修改树的锚点为树根,死活找不到

A: 需要直接在图片资源上修改锚点 +_+
改完之后还需要重新设置一下排序轴,不知道为啥
请添加图片描述

碰撞抖动问题

是因为刚体进行物理运动,碰撞时与精灵本身移动会产生误差,因此精灵和刚体不停进行位置矫正,导致抖动

A:使用刚体位置来控制移动

// Vector2 position = transform.position;
Vector2 position = rbody.position;
position.x += moveX * speed * Time.deltaTime;
position.y += moveY * speed * Time.deltaTime;
// transform.position = position;
rbody.MovePosition(position);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

改完时候性能很不好,待解决…

相机跟随

先要下一个Cinemachine包(Window-Package Manager-Cinemachine), 可以自动控制相机

相机边界

人物走到边界时就会看到边界外边,希望相机到边界就不要移动了
请添加图片描述
A: 在跟随相机中添加相机边界组件(Cinemachine Virtual Camera-Add Extension-Cinemachine Confiner)
再添加一个空节点,添加自定义形状的碰撞盒组件Polygon Collider 2D,将盒子覆盖整个地图上(如图)
将这个节点拖动到相机边界组件Bounding Shape 2D属性上
请添加图片描述
就Ok了请添加图片描述

代码模板

写了一个代码模板

{
	"Initial Code": {
		"prefix": "ucs",
		"body": [
			"///<summary>",
			"///Author: Qiu",
			"///Describe: $1",
			"///</summary>",
			"",
			"using System.Collections;",
			"using System.Collections.Generic;",
			"using UnityEngine;",
			"",
			"public class $TM_FILENAME_BASE : MonoBehaviour",
			"{",
			"\tvoid Start()",
			"\t{",
			"\t\t$2",
			"\t}",
			"\tvoid Update()",
			"\t{",
			"",
			"\t}",
			"}",
		],
		"description": "cocos creator common template"
	}
}

  • 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

碰撞检测

吃草莓

/// <summary>
/// 碰撞检测,开始碰撞时回调
/// </summary>
/// <param name="other">碰撞物体</param>
void OnTriggerEnter2D(Collider2D other)
{
    PlayerController pc = other.GetComponent<PlayerController>(); // 检测是否有PlayerController脚本
    if (pc != null)
    { //是和任务碰撞的
        Debug.Log("把它吃掉!");
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

进入陷阱
当人物进入陷阱中不走动时,此时不会进行碰撞中回调,需要在任务刚体组件中Sleeping Mode选择Never Sleep

/// <summary>
/// 碰撞中回调 每一帧调用一次
/// </summary>
/// <param name="other">碰撞物体</param>
void OnTriggerStay2D(Collider2D other)
{
    PlayerController pc = other.GetComponent<PlayerController>();
    if (pc != null)
    {
        pc.changeHp(-1);
        Debug.Log("啊!当前血量:" + pc.myCurHp);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

修改精灵显示范围

想要将陷阱的范围变大,直接拉回变形
请添加图片描述

请添加图片描述
A: 需要先在陷阱图片中改变属性

再改变陷阱节点的渲染模式

最后用Rect Tool就可以拉大范围了
请添加图片描述

动画面板按钮灰色

想编辑动画,但按钮都置灰了

A: 需要选中所编辑的节点

动画修改帧数

A: 动画面板x按钮下方的三个点,选择Show Sample Rate

添加混合树

这块没太懂。。
在这里插入图片描述
在这里插入图片描述

添加特效

添加节点-Effect-Praticle System
各种属性可以调节 比较多。。。慢慢了解吧
在这里插入图片描述

小问题:新建的脚本引入不了其它脚本类

A: 可能开启时间太长了?重启下VSCode就好了

添加音效

添加背景音乐
在这里插入图片描述
添加音效

private AudioSource audioS; //音效组件

void Start()
{
    audioS = GetComponent<AudioSource>();
}

/// <summary>
/// 播放音效
/// </summary>
public void AudioPlay(AudioClip clip)
{
    audioS.PlayOneShot(clip);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

设置音效近大远小

引擎666
给机器人添加了脚步声的音效,正常播放的话就会很吵
在音效组件下设置声音传播范围
在这里插入图片描述
但此时听不到声音,因为Audio Listener目前是挂载在主相机下的,而主相机在z轴-10的位置
所以解决办法是:在关闭主相机Audio Listener组件,在主相机下新建一个空节点,挂载上Audio Listener组件
OK~~
弹幕里说挂载在主角下更好??

打包

在File-Build Setting打开窗口在这里插入图片描述

设置完成后点击Build按钮,选中新建build文件夹,就等编译完成啦
在这里插入图片描述

但还是会有一些问题。。。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/770532
推荐阅读
相关标签
  

闽ICP备14008679号