Unity3D简单的小车游戏

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/q943520218/article/details/102468713

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

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

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

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

点击资源按钮框

Free_Trees中就会有所需资源了

f

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

先把上次的平面拖大一些,然后下载一张土地图片

    然后添加入场景中

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

效果如下:

再将上次的脚本逻辑加入,增加一个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拖入车辆下,作为车辆的子物体,这时摄像头就可以实现对车辆的跟随。

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

猜你喜欢

转载自blog.csdn.net/q943520218/article/details/102468713