Unity新手,下载好Hub和编辑器,新建一个3D项目进行一个简单的小游戏制作
目录
创建地面和小球
如图,在Hierarchy窗口中创建游戏地面,将其命名为Ground。随后在Inspector窗口的Transform右侧选择Reset命令,地面对象放置在原点。


可以选择地板材质,在Project窗口中新建文件夹名为Materials,再Materials文件中新建材质,并将材质文件rename为Ground。


修改Ground颜色后,点击左键将材质拖拽到Hierarchy中Ground,如图。

同样,新建小球,命名为Player,设置位置为原点。

将小球拖拽至地面上方

为小球添加一个重力,即设置为刚体组件,Inspector窗口最下方Add component中添加Rigidbody组件。(刚体是Unity中用来模拟游戏对象的物理特性的组件,可以让游戏对象具有物理属性,如质量、速度、力和角速度等。添加刚体组件后,游戏对象会立即响应重力,同时也可以受到碰撞的影响)
添加之后可以试运行一下,点击上方播放可以看到效果。

添加脚本,用键盘控制小球移动
先新建一个Scripts文件夹便于管理脚本文件
为小球添加脚本:在小球Player的Inspector中最下方Add搜索Player创建脚本。

双击Player脚本文件便可进入编辑模式
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
// Start is called before the first frame update
private Rigidbody rd;//定义刚体对象
public int force = 5;
void Start()
{
rd = GetComponent<Rigidbody>();//取得小球刚体
}
// Update is called once per frame
void Update()
{
float h = Input.GetAxis("Horizontal");//获取键盘水平输入
float v = Input.GetAxis("Vertical");//获取键盘垂直输入
rd.AddForce(new Vector3(h, 0, v) * force);//小球施加X轴正向的力,*force控制速度
}
}
定义public force后可在窗口中直接修改速度

增加游戏地面面积,如下图,将X,Z方向都扩大一倍

相机跟随小球移动
为Main Camera增加一个follow脚本,定义小球位置信息
public Transform playerTransform;//记录小球位置信息
将小球和相机绑定

取得小球位置信息后,添加代码实现相机跟随小球移动
设置可旋转金币
创建地面的边墙,可以运行一下,小球容易滚出边界。
创建一个Cube,调整位置大小。

复制粘贴,创造另外三面墙体。

将四个Cube拖动到Ground对象上形成父子关系。

创建Cube,命名为Pickup,移动Cube在地面上,调整位置大小

新建材质名为Pickup,修改为金色,拖动到Cube上

因需要创造多个金币,可以在Project新建文件夹Prefabs,存储预制体,将已有Cube左键拖到该,文件夹中,再将文件夹中的Pickup对象拖到舞台上,调整好高度,Ctrl+D复制多个,分别调整好位置。新建一个空物体,将所有金币统一放在空物体下。
调整金币时修改为Global模式更方便

新建pickup脚本,拖到Prefabs下的Pickup即可,其他复制金币也获得同样效果
void Update()
{
transform.Rotate(new Vector3(0, 1, 0));//绕y轴旋转
}
}

播放运行所有小球都可以正常旋转。
实现小球吃金币效果
点击Project窗口下Prefabs中的Pickup,找到tag,选择Add Tag,添加后在下拉菜单中再次选择。


实现小球碰撞金币后消失,打开Player脚本修改代码。
private void OnCollisionEnter(Collision collision)//碰撞检测函数
{
if(collision.collider.tag == "Pickup")
{
Destroy(collision.collider.gameObject);
}
}
显示分数
在Player中调整代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
// Start is called before the first frame update
private Rigidbody rd;//定义刚体对象
public int force = 5;
private int score = 0;
void Start()
{
rd = GetComponent<Rigidbody>();//取得小球刚体
}
// Update is called once per frame
void Update()
{
float h = Input.GetAxis("Horizontal");//获取键盘水平输入
float v = Input.GetAxis("Vertical");//获取键盘垂直输入
rd.AddForce(new Vector3(h, 0, v) * force);//小球施加X轴正向的力,*force控制速度
}
private void OnCollisionEnter(Collision collision)//碰撞检测函数
{
if(collision.collider.tag == "Pickup")
{
score++;
Destroy(collision.collider.gameObject);
}
}
}
添加Text,转成2D显示,在Rect Transform中选择左上角方框,调整Text位置,修改文字内容。

在Player中增加代码
using UnityEngine.UI;
public Text text;
在Player中将Text对象拖入

在碰撞函数中增加一行
private void OnCollisionEnter(Collision collision)//碰撞检测函数
{
if(collision.collider.tag == "Pickup")
{
score++;
text.text = score.ToString();
Destroy(collision.collider.gameObject);
}
}
运行一下

发布游戏

就可以试玩了。

基本操作就是这些了,可以再自行拓展其他功能,例如音效天空盒开始结束场景等等。
1918

被折叠的 条评论
为什么被折叠?



