文章目录
- 一、前言
- 二、导入地面素材
- 三、制作地面预设
- 四、使用脚本控制地面移动
- 五、起始和结束位置
- 六、复制多个地面预设
- 七、运行效果
一、前言
嗨,大家好,我是新发,今天是大年初三,大家牛年快乐,牛气冲天。
我打算写一篇使用Unity制作像天天酷跑一样的游戏的教程,会按功能点分成多篇文章来讲,希望可以帮助一些想学Unity的同学。
注:我使用的Unity版本是2020.1.14f1c1。
文章目录:
第一篇:人物动画序列帧
第二篇:使用Animator控制跑酷角色的动画状态切换
第三篇:跑酷地面制作
第四篇:使用脚本控制跑酷角色
第五篇:游戏结束与重新开始
第六篇:金币创建与吃金币
第七篇:游戏界面的基础UI
本工程的Demo工程,我已上传到GitHub,感兴趣的同学可以自己下载下来学习。
https://github.com/linxinfa/UnityParkourGameDemo
本节我将讲下如何制作地面,本节的效果:
二、导入地面素材
将地面素材导入Unity中。
在Unity中设置好Slice。
三、制作地面预设
将其制作成预设。
每个地面图片使用SpriteRenderer组件来渲染。
添加一个BoxCollider2D碰撞体。
如下:
四、使用脚本控制地面移动
游戏中看起来是角色在跑,其实角色没有跑,是地面在跑,所以我们要写一个脚本来控制地面的移动。
创建一个Ground.cs脚本。
地面从起始位置移动到结束位置,到大结束位置后又立刻回到起始位置。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Ground : MonoBehaviour
{private Transform groundTranform;/// <summary>/// 地面移动的结束位置/// </summary>private Transform end;/// <summary>/// 地面移动的起始位置/// </summary>private Transform start;/// <summary>/// 地面的移动速度/// </summary>private float moveSpeed = 0.1f;// Start is called before the first frame updatevoid Start(){groundTranform = transform;end = GameObject.Find("GroundEndPos").transform;start = GameObject.Find("GroundStartPos").transform;}// Update is called once per framevoid Update(){if (groundTranform.position.x > end.position.x){groundTranform.position -= new Vector3(moveSpeed, 0, 0);//往左移动}else//到达结束点{BackToStart();}}/// <summary>/// 回到起始点/// </summary>void BackToStart(){float yPosOffset = Random.Range(3, 20) * 0.1f; //随机高度偏移float xPosOffset = Random.Range(5, 15) * 0.1f; //随机水平偏移groundTranform.position = start.position + new Vector3(xPosOffset, yPosOffset, 0);}
}
将脚本挂到ground预设上。
五、起始和结束位置
创建两个空物体,分别命名为GroundStartPos和GroundEndPos作为起始位置和结束位置,如下:
六、复制多个地面预设
复制多个地面预设,摆好它们的位置,使其覆盖屏幕,如下:
七、运行效果
运行Unity,效果如下:
加上角色和背景图,效果如下:
下一节讲下用脚本控制角色。
[点击进入下一节]