Unity入门学习之Roll A Ball小游戏

这个是一个比较简单的入门小项目,简单记录一下步骤和知识点。

整体概览

1.游戏界面
在这里插入图片描述
2.游戏玩法:目标小球吃掉所有的小方块,则游戏胜利

创建工程

在Assets目录下新建Materials、Prefabs、Scenes、Scripts文件夹,用于分别存放材质、模型、场景和脚本文件

添加素材

使用UI中的Plane作为整个地面板,3D Object中的Sphere作为玩家控制的小球,3D Object中的Cube作为围墙、被捕食的小方块

1.材质 Material
类似于包装或者说是喷漆,作为在目标物体外层样式。
最简单的使用方法是右击、Create一个Material,修改Main Maps下的Albedo属性,更换颜色。
将材质拖放到对于物体下,即可生效。

2.素材 Prefab
相当于一个模板,需要用的时候之间拖放到场景当中。好处是,修改模板物体的属性,由该模板生成的所有物体的属性就统一修改了,比较方便。

3.场景 Scene
一个游戏可能由多个不同的场景组成,按需要在各场景切换。

4.视角
每个游戏物体都有一个自己的视角(Local)和全局视角(Global),在界面左上角可以进行切换。在这里插入图片描述

添加功能

1.控制小球运动
首先给球(Player)添加一个Component:RigidBody(刚体)。RigidBody的作用是可以模拟物理的特性,例如运动、重力等。

创建C#脚本Player.cs,挂到小球Player下,在脚本中获取这个RigidBody组件,并控制其运动。

// 作用力的大小(设置为public可以显示在组件属性栏中)
public float force = 5;   

// Use this for initialization
void Start () {
    rd = GetComponent<Rigidbody>();     // 得到绑定脚本的当前物体上的刚体组件
}
// Update is called once per frame
void Update () {
    float h = Input.GetAxis("Horizontal");  // 获取键盘输入,范围[-1,1],A左D右
    float v = Input.GetAxis("Vertical");
    rd.AddForce(new Vector3(h,0,v) * force);  // 给刚体施加外力,控制移动
}

然后可以再Unity中,给小球自定义外力大小。
在这里插入图片描述
2.检测小球与方块的碰撞
此处有两种方法:碰撞检测、触发检测。
碰撞检测具有物理效果,物理无法进入触发器内部;出发检测反之。

首先,小球和方块都必须有collider组件,如图
在这里插入图片描述在这里插入图片描述
其中的Is Trigger属性,勾选表示使用触发检测,不勾选则使用碰撞检测。

然后再C#脚本Player.cs种添加代码:

// 碰撞检测
void OnCollisionEnter(Collision collision)
{
    // collision.collider 可以获取碰撞到当前目标的游戏物体的Collider组件
    //string name = collision.collider.name;
    //print(name);    // 控制台输出游戏物体名称
    if (collision.collider.tag == "Pickup")
    {
        Destroy(collision.collider.gameObject);     // 销毁目标物体
    }
}

// 触发检测 (区别:无物理效果,物体可以进入触发器内部;例如人物进入到某一块地区后,门自动打开)
void OnTriggerEnter(Collider collider)
{
    if (collider.tag == "Pickup")
    {
        Destroy(collider.gameObject);   // 销毁被碰撞的物体
    }        
}

3.统计分数
新建UI->Text,用于显示分数;再建一个显示You Win。

在脚本Player.cs中动态控制该文本物体。

// 只需要控制该Text物体的Text组件
public Text scoreText;  
 // 需要控制整个游戏物体
public GameObject winText; 
// 修改触发检测部分的代码
void OnTriggerEnter(Collider collider)
{
     if (collider.tag == "Pickup")
     {
         score++;
         scoreText.text = score.ToString();   // 显示分数
         Destroy(collider.gameObject);   // 销毁被碰撞的物体
         if (score == 8)
        {
             winText.SetActive(true);  // 激活物体,使之显示出来
        }
   }       
}

在Unity中Player物体下,关联一下代码变量和Unity物体:
在这里插入图片描述
4.给小方块添加自转效果
新建C#脚本PickUp.cs并挂到Pickup小方块模板下。

// transform返回挂载此组件的物体的位置
void Update () {
    transform.Rotate(new Vector3(0, 1, 0));     // 旋转当前组件,绕y轴
}

5.设置游戏视角跟随小球
原理:设置相机和小球之间的相对位置不变。
新建C#脚本FollowTarget并挂到Camera物体下。

public Transform playerTransform;   // 用来获取主角位置
private Vector3 offset; // 偏移量

void Start () {
	// transform.position 获取调用脚本的当前游戏组件位置,此处camera使用了脚本,返回camera位置
    offset = transform.position - playerTransform.position;
}
	
void Update () {
    // 设置相机位置,与主体组件相对位置保持不变
    transform.position = playerTransform.position + offset;  
}

打包发布游戏

在Unity中选择File->Build Settings,拖入要发布的Scene,选择发布的平台:
在这里插入图片描述
点击Build完成游戏发布,发布后的文件目录如下:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity开发小游戏是通过使用Unity引擎来创建和开发游戏的过程。这个过程可以通过学习和掌握Unity的工作流程和编程语言来实现。在Unity上开发小游戏可以让你快速将想法转化为可工作的游戏原型。 在Unity中,你可以使用现有的游戏模板或克隆现有的游戏来创建基础游戏。这样可以节省时间和精力,同时也可以对标准游戏进行一些修改和创新。 然而,在开始开发之前,你需要具备一定的基础知识,包括熟悉Unity的工作流程和编程。这意味着你应该已经完成了基础知识系列的学习,并且对Unity的工作和编程有一定的了解。 Unity提供了一个交互式的游戏场景,在这个场景中,你可以创建游戏对象并在检查器中连接它们的内容。你可以利用Unity的功能来添加图形,动画,物理效果等等,从而创建出精彩的游戏场景。通过在Unity中开发小游戏,你可以充分发挥你的想象力和创造力,制作出独一无二的游戏作品。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Unity小游戏】游戏开发案例-Unity打造畅玩无阻的小游戏(上)](https://blog.csdn.net/weixin_72715182/article/details/130430911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值