欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity3D简单的小车游戏

程序员文章站 2024-01-25 08:19:22
...

    首先我们需要在unity3d 的Assert store中找几个资源导入进去

    点击进入assert store 搜索free的资源

    然后找到自己想要的资源,下载,import导入

    我这边找了一个树的资源和一个车的资源如下:(两个都导入)

Unity3D简单的小车游戏

Unity3D简单的小车游戏

点击资源按钮框

Free_Trees中就会有所需资源了

fUnity3D简单的小车游戏

然后就可以做一个简单的小车游戏了

先把上次的平面拖大一些,然后下载一张土地图片Unity3D简单的小车游戏

    然后添加入场景中

Unity3D简单的小车游戏

拖入图片进入平面中,在把树和车放入场景中

效果如下:Unity3D简单的小车游戏

再将上次的脚本逻辑加入,增加一个MoveCar的脚本,在里面响应上下左右的逻辑

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveCar : MonoBehaviour
{
    public const int HERO_UP = 0;
    public const int HERO_RIGHT = 1;
    public const int HERO_DOWN = 2;
    public const int HERO_LEFT = 3;
    public int state = 0;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float KeyVertical = Input.GetAxis("Vertical");
        float KeyHorizontal = Input.GetAxis("Horizontal");
        Debug.Log("keyVertical" + KeyVertical);
        Debug.Log("keyHorizontal" + KeyHorizontal);
        if (KeyVertical == -1)
        {
            SetCarState(HERO_DOWN); //下 
        }
        else if (KeyVertical == 1)
        {
            SetCarState(HERO_UP);  //上
        }
        if (KeyHorizontal == 1)
        {
            SetCarState(HERO_RIGHT); //右 
        }
        else if (KeyHorizontal == -1)
        {
            SetCarState(HERO_LEFT);  //左
        }

        if (KeyVertical == 0 && KeyHorizontal == 0)
        {
        }  
    }
    void SetCarState(int newState)
    {
        //根据当前车方向与上一次备份的方向计算出模型旋转的角度  
        int rotateValue = (newState - state) * 90;
        Vector3 transformValue = new Vector3();

        //模型移动的位置数值  
        switch (newState)
        {
            case HERO_UP:
                transformValue = Vector3.forward * Time.deltaTime;
                break;
            case HERO_DOWN:
                transformValue = (-Vector3.forward) * Time.deltaTime;
                break;
            case HERO_LEFT:
                transformValue = Vector3.left * Time.deltaTime;
                break;
            case HERO_RIGHT:
                transformValue = (-Vector3.left) * Time.deltaTime;
                break;
        }

        transform.Rotate(Vector3.up, rotateValue);
        //移动车辆
        transform.Translate(transformValue * 1, Space.World);
        state = newState;
    } 
}

      这时车辆已经可以运行了,但是运行时我们发现车辆跑走了,但是镜头还在原地,这时我们可以使用一个最简单的方法来解决

就是把摄像头main camera拖入车辆下,作为车辆的子物体,这时摄像头就可以实现对车辆的跟随。Unity3D简单的小车游戏

这时我们就可以愉快的玩这个简单的小车游戏了,