Unity3D简单的小车游戏
程序员文章站
2024-01-25 08:19:22
...
首先我们需要在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拖入车辆下,作为车辆的子物体,这时摄像头就可以实现对车辆的跟随。
这时我们就可以愉快的玩这个简单的小车游戏了,