unity实战:教你做黄豆君
Posted 肖尘
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity实战:教你做黄豆君相关的知识,希望对你有一定的参考价值。
文章目录
前言
提示
最近看工作室发行了一款新游戏,初步调查发现:
游戏还是有趣的好,有时感觉3D大作
还不如一个不到100MB游戏带来快乐的多
今天就教大家一款休闲游戏
一、Unity2D入门
1.入门准备
游戏是一个2D平台,可以控制主角移动、跳跃、爬墙,你会控制黄豆君绕过障碍物。攀爬墙壁,通过重重阻碍最后得到一碗拉面来获得胜利。
1.1导入开发所需要的资源
Unity丰富的功能和组件可以让帮助你制造引人注目的2D游戏。除了标准组件,如精灵,动画和物理碰撞系统,你还可以得到专门的物理,关节和区域效应组件。当你创建超级黄豆君时,你将探索最常用和最有用的2D组件以及物理碰撞系统。
现在开始你的2D之旅!首先打开 Unity并新建工程。导入你需要工作的所有资源和精灵。加载游戏场景中的场景。
1.2 创建地形
你可能想知道精灵子文件夹中的白色精灵是怎么回事。答案很简单:你可以很容易地在游戏中动态地渲染它们,或者在编辑器中用自己的颜色选择,而不必为每个颜色创建几个精灵。
1.3改变地形颜色
在层次结构中,选择地形精灵游戏对象,并在Inspector中单击颜色以生成颜色选择器。
输入十六进制值:59443CFF ,然后关闭颜色选择器。
2.游戏中的2D Camera
2.1了解Camera的基本属性
2.2创建相机跟随脚本
2.3把主角装载到照相机跟随脚本上
3.物理碰撞系统
3.1设置地形碰撞检测组件
3.2为主角添加碰撞检测
4.2D 动画组件
4.1打开Animation窗口,创建新动画
4.2添加动画内容
4.3设置默认动画
5.游戏脚本
5.1添加控制主角脚本代码
在项目浏览器中,右键单击脚本文件夹并创建一个新的C#脚本。把它命名为SoyBoyController。双击它以打开编辑器中的脚本。
在脚本的顶部,在公共类SoyBoyController定义之上,添加以下内容:
[RequireComponent(typeof(SpriteRenderer),
typeof(Rigidbody2D), typeof(Animator))]
这一行验证了附加到该脚本的任何游戏对象都有工作所需的最必要的组件——它基本上预先限定了组件。您的SoyBoy GameObject符合要求。
这是一个方便的脚本编写技巧,确保脚本只适用于符合要求的游戏对象。
现在需要拥有有用值的属性字段和缓存组件引用,以供以后使用。
在SoyBoyController定义中添加以下变量,但在Start()之上:
public float speed = 14f;
public float accel = 6f;
private Vector2 input;
private SpriteRenderer sr;
private Rigidbody2D rb;
private Animator animator;
现在,您将创建一个新的方法叫作Awake()。这个方法在Start()方法之前执行。在Awake()中写入以下代码:
void Awake() {
sr = GetComponent<SpriteRenderer>();
animator = GetComponent<Animator>();
rb = GetComponent<Rigidbody2D>();
}
简而言之,这确保了当游戏开始时组件引用被缓存。
更具体地说,它在GameObject上定位指定的组件类型,SoyBoyController.cs将它们分配给三个字段。这样,您就可以获得使用RequireComponent() 类属性。
为了使它成为一个完整的循环,考虑一下:如果你不执行所需的组件类型,并且游戏对象没有一个或多个组件,那么Awake()会在试图找到组件时失败。
现在要确保黄豆君知道它应该面对哪个方向。您将使用Unity的输入类来获取用户输入,这样您就可以改变黄豆君的方向。
将以下代码添加到Update():
void Update() {
// 1
input.x = Input.GetAxis("Horizontal");
input.y = Input.GetAxis("Jump");
// 2
if (input.x > 0f) {
sr.flipX = false;
}
else if (input.x < 0f) {
sr.flipX = true;
}
}
将新创建的SoyBoyController脚本添加到场景中的SoyBoy对象中,然后点击Inspector中的“Apply”按钮来更新SoyBoy预制件。
运行游戏并按左或右(或A和D)在键盘上看到黄豆君开关的方向。
void FixedUpdate() {
// 1
var acceleration = accel;
var xVelocity = 0f;
// 2
if (input.x == 0) {
xVelocity = 0f;
}
else {
xVelocity = rb.velocity.x;
}
// 3
rb.AddForce(new Vector2(((input.x * speed) - rb.velocity.x)
acceleration, 0));
4
rb.velocity = new Vector2(xVelocity, rb.velocity.y);
}
5.2调整重力设置
二、深入了解Unity2D
1.配置物理碰撞层
打开Physics 2D Settings
配置Layer Collision Matrix
2.黄豆君控制器的实现
2.1编写代码让脚本可以控制主角移动,跳跃
2.2编写代码让主角可以在两堵墙之间跳跃
3.制作角色动画
设置动画转换参数
设置默认动画
设置动画转换的条件
完成动画之间的关系
4.创建游戏关卡道具
为游戏添加障碍物
为障碍物添加脚本
为障碍物添加粒子特效
把声音添加到游戏
总结
这是一部分,下续要等一段时间了,最近有点小忙啊 !
以上是关于unity实战:教你做黄豆君的主要内容,如果未能解决你的问题,请参考以下文章
Unity GameFramework✨(三十二)教你做闪屏动画:App启动页