【Unity3D】【小游戏】打砖块
记录学习过程
Unity3D小游戏打砖块
Unity版本:2018.3.0f2
源码:https://github.com/GreAmbWang/Unity
简介:在游戏中可以通过键盘的↑↓←→移动视角,通过鼠标左右键发射子弹,还可以通过点击滑轮释放大招,子弹可以击倒砖块
一,新建项目
在Assets中新建一个Materials存放材质,新建一个Prefabs存放预制体,新建一个Script存放脚本
二,新建地板
在场景中新建一个地板Panel改名为Ground,适当地修改地板的颜色,将Ground的Position设置为(0,0,0),在Materials文件夹中新建一个材质用于地板
地板:
三,预制体,砖块和子弹
在场景中分别新建一个Cube(砖块)和一个Sphere(子弹),把它们都拖进Prefabs文件夹,都添加一个Rigidbody组件(刚体)
可以修改子弹的Scale,这样更像一个子弹
四,添加墙体脚本
在Script文件夹中新建一个C#脚本Wall,用于新建墙体(做个程序员,不用搬砖了 )
/// <summary>
/// 墙体
/// </summary>
public class Wall : MonoBehaviour
{
/// <summary>
/// 砖块横向个数
/// </summary>
int width = 50;
/// <summary>
/// 砖块竖向个数
/// </summary>
int height = 10;
/// <summary>
/// 砖块
/// </summary>
public GameObject prefab;
/// <summary>
/// 创建一个墙体
/// </summary>
/// <param name="distance">距离</param>
private void CreateWall(float distance = 0)
{
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
//克隆砖块并实现墙体居中
Instantiate(prefab, new Vector3(-width / 2 + j, 0.5f + i, distance), transform.rotation);
}
}
}
void Start()
{
if (prefab != null)
{
//在原点新建一栋墙
CreateWall();
//在距离原点10米处新建一栋墙
CreateWall(10);
//在距离原点20米处新建一栋墙
CreateWall(20);
}
}
}
将脚本添加到Ground中,将刚才新建的预制体Cube拖动Wall的Prefab中
效果是这样的,三栋墙
想多建几栋墙,也可以
五,添加射击脚本
在Script文件夹中新建一个C#脚本Shoot,用于发射子弹
/// <summary>
/// 发射子弹
/// </summary>
public class Shoot : MonoBehaviour
{
/// <summary>
/// 子弹
/// </summary>
public GameObject bullet;
/// <summary>
/// 子弹速度
/// </summary>
int speed = 40;
void Update()
{
//点击鼠标左键,发射一个子弹
if (Input.GetMouseButtonDown(0))
{
ShootOne();
}
//点击鼠标右键,发射两个子弹
else if (Input.GetMouseButtonDown(1))
{
ShootOne();
ShootOne();
}
//点击鼠标中键(滑轮),发射多个子弹
else if (Input.GetMouseButtonDown(2))
{
for (int i = 0; i < 100; i++)
{
ShootOne();
}
}
}
/// <summary>
/// 发射一个子弹
/// </summary>
void ShootOne()
{
GameObject b = Instantiate(bullet, transform.position, transform.rotation);
Rigidbody rgd = b.GetComponent<Rigidbody>();
rgd.velocity = transform.forward * speed;//给子弹一个向前的速度
}
}
将脚本添加到主相机Main Camera中,将刚才新建的预制体Sphere拖动Shoot的Bullet中
六,添加视角移动脚本
在Script文件夹中新建一个C#脚本Movement,用于移动视角
/// <summary>
/// 视角移动
/// </summary>
public class Movement : MonoBehaviour
{
/// <summary>
/// 移动速度
/// </summary>
float speed = 5;
void Update()
{
//水平方向
float h = Input.GetAxis("Horizontal");
//垂直
float v = Input.GetAxis("Vertical");
//移动视角
transform.Translate(new Vector3(h * speed, v * speed, 0) * Time.deltaTime);
}
}
将脚本添加到主相机Main Camera中