用unity制作打砖块游戏
运用unity制作打砖块游戏是稍微比较简单的,对于我们这些初学者也是可以进行尝试制作且成功运行
那么制作 打砖块游戏的第一步是
一 先要构思要什么控件
既然要打砖块
那么就应该有砖块和打击砖块的东西
于是乎就可以使用cube游戏物体作为游戏中的砖块
使用Sphere球型作为子弹来射击
当然,Cube方块是需要有平台的来支撑的,不然设置刚体过后就会直接掉
下去。所以还需要plane组件
plane游戏物体作为地面
二 构建游戏场景
既然知道需要什么游戏物体了就可以进行游戏场景的构建了
打砖块的游戏大家都应该玩过,但是怎么用unity制作3D的打砖块呢?构建这个肯定有很多很多方法,比如说用cube垒出一面墙,然后用Sphere进行射击击打,可以设计成这个样子
用一个个cube物体软件做成的墙面
也可以加厚呀 加高呀 反正随心的组成你想要的样子。
在这里呢会有一些细节部分
使用ctrl+D进行复制方块,然后按住ctrl可以按照1米为单位的位移
然后复制后会发现有很多很多的cube,这会使得界面看起来很繁杂,为了简洁美观,将复制的cube放入到cube父类里,这样会好一点
然后游戏场景基本上就差一些小细节了,场景上肯定不能让他就这么简简单单,干干净净,可以适当的贴一些贴图,做一些漂亮的材质,让整个游戏看起来稍微好看一些, 适当增加一丢丢的游戏体验。
三 游戏的脚本和细节部分
场景做好后就是要开始写代码,让游戏的功能得以实现
在写代码前也需要做一些准备工作
创建一个文件夹专门放入游戏物体作为预制体
同时为Cube和Sphere放上刚体组件
这样Cube就能实现被击打的物理效果
Sphere也能有击打功能然后就是子弹部分
子弹部分是需要通过代码进行实列化的
创建一个shoot c#文件
然后编写代码
public class shouut : MonoBehaviour
{
public GameObject zidan;
public float speed = 20;
// Start is called before the first frame update
void Start()
{
Debug.Log("Hi gamer!");
//GameObject.Instantiate(zidan,transform.position,transform.rotation);
}
// Update is called once per frame
void Update()
{
if(Input.GetMouseButtonDown(0))
{
GameObject b= GameObject.Instantiate(zidan,transform.position,transform.rotation);
Rigidbody rgd = b.GetComponent<Rigidbody>();
rgd.velocity = transform.forward * speed;
}
}
}
这行代码呢就是实列化一个子弹
但是要记得在unity当中把Sphere的预测体添加到
创建的Zidan里 这样才让Sphere有了子弹的部分功能
但是现在我们并不能在游戏里出现子弹,所以编写了使用鼠标左键来实列化子弹的代码
这里就是当我们单击鼠标左键就实列化一个球体
单击鼠标后会出现一个球
当然光这样是不行的,我们还得设置一个速度让它冲击,所以这行代码就是设置子弹的方向和子弹的速度
void Update()
{
if(Input.GetMouseButtonDown(0))
{
GameObject b= GameObject.Instantiate(zidan,transform.position,transform.rotation);
Rigidbody rgd = b.GetComponent();
rgd.velocity = transform.forward * speed;
}
}
这下面的代码意思就是实列化后,他的方向,我们要让他有冲击力,所以它的方向是向前的
GameObject b= GameObject.Instantiate(zidan,transform.position,transform.rotation);
这下面一行呢就是设置子弹的刚刚体和他的射击速度
Rigidbody rgd = b.GetComponent();
rgd.velocity = transform.forward * speed;
当我们设置好后,unity里面也是是可以直接设置的。
然后就是需要操作,用什么操作呢?这里我们使用Main Camera作为我们的游戏视角和发射子弹的物体
所以我们的c#脚本是放到Main Camera里的。
要实现控制Main Camer的移动,又要编写代码
这里可以创造另一个c#文件让脚本稍微清晰一点
public class movement : MonoBehaviour
{
public float speed = 3;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
float h = Input.GetAxis("Horizontal");
// Debug.Log(h);
float v = Input.GetAxis("Vertical");
transform.Translate(new Vector3(h, v, 0)*Time.deltaTime*speed);
}
}
我们要让摄像机Main Camera进行移动,那么摄像机移动也是需要速度的,所以又创建了Speed。
update下面的代码就是对应的操纵按键
左右操作就是
float h = Input.GetAxis(“Horizontal”);
上下操作就是
float v = Input.GetAxis(“Vertical”);
摄像机的移动速度和坐标就是
transform.Translate(new Vector3(h, v, 0)Time.deltaTimespeed);
这样摄像机就可以在x y 轴中进行移动了
这样把shoot的c#代码和movemen的代码都放入Main Camera中、
打砖块游戏就做好了!