文章目录
- 一、前言
- 二、导入地面素材
- 三、制作地面预设
- 四、使用脚本控制地面移动
- 五、起始和结束位置
- 六、复制多个地面预设
- 七、运行效果
一、前言
嗨,大家好,我是新发,今天是大年初三,大家牛年快乐,牛气冲天。
我打算写一篇使用Unity制作像天天酷跑一样的游戏的教程,会按功能点分成多篇文章来讲,希望可以帮助一些想学Unity的同学。
注:我使用的Unity版本是2020.1.14f1c1。
本节我将讲下如何制作地面,本节的效果:
二、导入地面素材
将地面素材导入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 update
void Start()
{
groundTranform = transform;
end = GameObject.Find("GroundEndPos").transform;
start = GameObject.Find("GroundStartPos").transform;
}
// Update is called once per frame
void 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,效果如下:
加上角色和背景图,效果如下: