分享

初识Unity-吃丸子(2)

 印度阿三17 2020-12-15

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


1. 完善玩家

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

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

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

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

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

代码如下:

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里的“是触发器”勾选上,我们这里进行的碰撞检测是利用触发器的。

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

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

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;
    }
}
来源:https://www./content-4-787351.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多