初识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;
}
}
标签:脚本,void,玩家,Unity,初识,using,丸子,public 来源: https://www.cnblogs.com/int233/p/14141663.html