接着上一篇文章,继续我们的“吃丸子”小游戏


1. 完善玩家

选中我们创建的玩家(球体),为它添加上刚体组件(Rigidbody),刚体组件里有重力,阻力等等物理特性,这可以让我们玩家在游戏过程中遵循一定的物理规律。

如果你不给玩家添加刚体组件,并且初始化的时候玩家有一个高度,那么它会漂浮在那个高度,不会遵循物理规律掉下来,这显然不是我们想要的结果。

为了让玩家跟随AWSD键移动,我们需要给玩家添加一个脚本。还是选中玩家,然后点击组件,在输入框里输入脚本名字,选择创建脚本,这样玩家的脚本就创建好了。

在Assets文件夹里新建一个Scripts文件夹,用来存放脚本文件。将创建好的脚本拖进该文件夹。

在文件夹里双击脚本,在VS里进行编辑 (我设置的默认打开VS,你也可以选择其他编辑器)

unity用脚本如何给物体添加脚本_ide

代码如下:

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

public class Player : MonoBehaviour
{
    private Rigidbody rd;   //创建一个刚体对象
    public int force = 5;   //力的大小

    private int score;  //分数
    public Text text;   //创建ui文本对象
    public GameObject WinText;  //创建游戏对象
    // Start is called before the first frame update
    void Start()
    {
        rd = GetComponent<Rigidbody>();     //得到玩家刚体对象
    }

    // Update is called once per frame
    void Update()
    {
        float h = Input.GetAxis("Horizontal");  //水平移到标识,结果1和-1标识正向和反向
        float v = Input.GetAxis("Vertical");    //垂直移动标识,结果1和-1标识正向和反向
        rd.AddForce(new Vector3(h, 0, v) * force);  //给玩家施加一个力
    }

    //碰撞检测,碰到后会顿一下,速度会下降
    /*
    private void OnCollisionEnter(Collision collision)
    {
        //collision.collider:获取碰撞到的游戏物体身上的collider组件
        //string name = collision.collider.name;
        //print(name);
        if (collision.collider.tag == "PickUp")
        {
            Destroy(collision.collider.gameObject);
        }
    }*/

    private void OnTriggerEnter(Collider other)
    {
        if (other.tag == "WanZi")  //判断是不是丸子
        {
            score++;
            text.text = score.ToString();   //显示分数
            if (score == 6)
            {
                WinText.SetActive(true);    //当丸子吃完后,显示游戏介绍文本
            }
            Destroy(other.gameObject);  //丸子吃一个销毁一个
        }
    }
}

当脚本写完后,运行游戏你会发现玩家可以跟随键盘移动了,但是碰到地图上的丸子分数缺没有增加,丸子也没有消失。

这是因为我们还没给丸子添加标签,在Prefabs文件夹里选中丸子,为其添加“WanZi”标签,并选中该标签,这样我们才能识别游戏里谁叫“WanZi”。

然后,将丸子Capsule Collider里的“是触发器”勾选上,我们这里进行的碰撞检测是利用触发器的。

然后依次将我们建好的文本对象拖入脚本组件的相应位置。

unity用脚本如何给物体添加脚本_System_02

这样,游戏就能正常进行了。

2. 完善丸子

为了让丸子好看一点,我们也给丸子建立一个脚本,让其旋转起来。

建立脚本的方式和玩家一样,代码如下:

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

public class PickUp : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(new Vector3(1, 0, 0));
    }
}

3. 完善镜头

为了让镜头跟随玩家移动,给相机镜头添加脚本如下:

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

public class FollowPlayer : MonoBehaviour
{
    public Transform playerTransfrom;
    private Vector3 offset;
    // Start is called before the first frame update
    void Start()
    {
        offset = transform.position - playerTransfrom.position;      //得到镜头与玩家之间距离的缺省值
    }

    // Update is called once per frame
    void Update()
    {
        transform.position = playerTransfrom.position + offset;
    }
}

脚本建立好之后,记得把玩家拖到脚本组件的Transform属性上,对其进行赋值。

unity用脚本如何给物体添加脚本_小游戏_03


到此,“吃丸子”这个简单的小游戏就完成了,有兴趣的话,可以进一步对其进行扩充(❁´◡`❁)

游戏内容虽然不多,但对于我这种小白来说,了解和掌握到的点还是挺多的,同时也使我对Unity的一些基本操作有了一定的了解。


我的手越肮脏 眼神越是发光