有碰撞加分代码
1.先创建场景,可将之前做的射击人和场地导入并运用(当然此时代码只需要WASD和鼠标控制移动,不需要子弹这一方面,可在代码中将其注释掉)。
2.需要为人物添加Rigibody,在运行过程中人物可能会倒塌,这时需要点击人物,并点击右边inspector中的Rigibody取消Use Gravity,还需要将人物除身体以外的其他部位的碰撞器关闭(Collider)。
3.用球建一个简单的金币,由于缩放但是球的原有碰撞器并未一起缩放,简单的可以将球的碰撞器在Add Component中换成box collider,同时将球的触发(is trigger)打开(如果不添加,在运行中金币可能不会消失),然后就可以复制金币了(此处复制又说可用代码按一定位置进行复制,但是现在还不会,就一个一个的拖了)。
4.创建新的代码进行碰撞销毁指令,将其指令给予人物(此处金币的碰撞销毁以及加分都在此代码中,但是一般游戏得分的代码是另开一个新的代码,这里本来老师是想开个新的或者是写在控制人物角色中,为了让我们好理解以及我们暂时不会类和类之间的变量访问,所以写到了这里),同时文本加分显示框也在碰撞代码中敲击,需要点击鼠标右键选择UI,创建文本框,文本框颜色可在inspector中修改,具体选择如图所示。
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class crash : MonoBehaviour
{
TMP_Text OneWenBen;
GameObject wenben;
private void Start()
{
wenben = GameObject.Find("Text (TMP)");
OneWenBen = wenben.GetComponent<TMP_Text>();
}
// 这个脚本是用来进行碰撞检测的,一旦有物体撞到我,我就拿到了他
public static int CurrentScore = 0;
private void OnTriggerEnter(Collider OnePZobj)//一旦发生碰撞就执行
{
Debug.Log("有人碰到了我,他叫"+OnePZobj.name);
Debug.Log("有人碰到了我,我让他消失" + OnePZobj.name);
Object.Destroy(OnePZobj.gameObject);
CurrentScore += 1;
Debug.Log("恭喜你吃到了金币,当前分数:"+ CurrentScore);
OneWenBen.text = "Score:"+CurrentScore.ToString ();//score为文本得分前添加
}
}