unity做一个小游戏(适合零基础或者巩固加深unity中的工具类的用法)

今天跟着官方unity做了一个小游戏。巩固一下之前学习的unity的知识。注意unity的版本要在2018.3以上

大概游戏是这样子的如图:人物只能控制左右移动,空格发射饼干,动物从屏幕上方随机出现在左右的位置并且向下移动,当饼干打中动物的时候,动物和饼干都消失。下面将具体实现细节;

unity做一个小游戏(适合零基础或者巩固加深unity中的工具类的用法)_第1张图片

首先从unity官方地址下载该游戏所需要的素材包;

https://connect.unity.com/p/create_with_code_review

资源包解压后;将这个资源导入你的unity中,将unity做一个小游戏(适合零基础或者巩固加深unity中的工具类的用法)_第2张图片这个场景导入你的scene面板中,然后将人物unity做一个小游戏(适合零基础或者巩固加深unity中的工具类的用法)_第3张图片随机挑一个导入,在导入3个动物(可以多个),还有一块饼干(其他食物也可),上面的素材在资源包里面都有。

接下来就是布置人物和动物,布置成如下unity做一个小游戏(适合零基础或者巩固加深unity中的工具类的用法)_第4张图片

 

将动物和饼干按照以上位置布局后添加预制件 并且将饼干添加到下面人物的脚本中(用于人物发射饼干)

然后开始写人物脚本,如下 将该脚本添加到人物身上。需要注意的是将饼干的预制件

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的基本操作和代码我没有细讲!对代码或者有疑问或者自己实现有问题欢迎提问!

你可能感兴趣的:(unity实现游戏,c#)