初识Unity-吃丸子(2)
接着上一篇文章,继续我们的“吃丸子”小游戏
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; }}
赞 (0)
