今天跟着官方unity做了一个小游戏。巩固一下之前学习的unity的知识。注意unity的版本要在2018.3以上
大概游戏是这样子的如图:人物只能控制左右移动,空格发射饼干,动物从屏幕上方随机出现在左右的位置并且向下移动,当饼干打中动物的时候,动物和饼干都消失。下面将具体实现细节;
首先从unity官方地址下载该游戏所需要的素材包;
https://connect.unity.com/p/create_with_code_review
资源包解压后;将这个资源导入你的unity中,将这个场景导入你的scene面板中,然后将人物随机挑一个导入,在导入3个动物(可以多个),还有一块饼干(其他食物也可),上面的素材在资源包里面都有。
将动物和饼干按照以上位置布局后添加预制件 并且将饼干添加到下面人物的脚本中(用于人物发射饼干)
然后开始写人物脚本,如下 将该脚本添加到人物身上。需要注意的是将饼干的预制件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
///
///
public class playChooler : MonoBehaviour
{
//人物移动速度
public float moveSpeed=10;
//x轴方向移动的返回值 0 -1 1
public float horizontalInput;
//限制人物移动的位置
public float xrange;
//发射饼干
public GameObject pizzPrefab;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//获取左右移动的位置
horizontalInput = Input.GetAxis("Horizontal");
this.transform.Translate(Vector3.right*horizontalInput*Time.deltaTime* moveSpeed);
//限制人物左右移动的极限位置
if (transform.position.x > 16f ){
transform.position = new Vector3(xrange,transform.position.y,transform.position.z);
}
if ( transform.position.x < -16f)
{
transform.position = new Vector3(-xrange, transform.position.y, transform.position.z);
}
//获取键盘输入的空格输入
if (Input.GetKeyDown(KeyCode.Space)) {
//发射披萨
Instantiate(pizzPrefab, transform.position, pizzPrefab.transform.rotation);
}
}
}
下面是动物和披萨脚本(因为动物和饼干都是单纯的沿着自身的z轴移动所以脚本放到一起)并且给动物和饼干添加碰撞器,另外给饼干添加刚体(因为碰撞检测需要参与碰撞的物体有一个是刚体),动物不需要添加刚体。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
///
///
public class moveFored : MonoBehaviour
{
//动物移动的速度
public float speed = 10;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//向z轴方向移动
transform.Translate(Vector3.forward*speed*Time.deltaTime);
//如果动物移动超过镜头范围就删除动物
if (transform.position.z > 30f|| transform.position.z < -10f)
{
Destroy(gameObject);
}
}
//当披萨和动物碰撞触发 让物体删除掉
private void OnCollisionEnter(Collision ohter)
{
Destroy(ohter.gameObject);
//Destroy(gameObject);
}
}
最后一个是动物生成器 将三个动物的预制件添加到生成器的anminPrefabs中, 并且将该脚本挂载到一个空物体上
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
///
///
public class createAnmal : MonoBehaviour
{
// Start is called before the first frame update
//动物生成器
public GameObject[] anminPrefabs;
public int index;
public float xRange;
void Start()
{
InvokeRepeating(nameof(spawnAnmal), 2, 2);
}
// Update is called once per frame
void Update()
{
}
//随机x方向随机生成一个动物
void spawnAnmal() {
float xPos = Random.Range(-xRange, xRange);
index = Random.Range(0,anminPrefabs.Length);
Instantiate(anminPrefabs[index],new Vector3(xPos,0,25),anminPrefabs[index].transform.rotation);
}
}
上面做完自己调试一下。因为该游戏比较简单,所以涉及到unity的基本操作和代码我没有细讲!对代码或者有疑问或者自己实现有问题欢迎提问!