C# Unity碰撞检测-添加碰撞的GUI分数?
我正在Unity做一个弹球游戏,我有一个问题。当弹球与圆柱体碰撞以增加分数时,它不起作用。我在Unity中标记了圆柱体,并将此脚本附加到弹球上。它甚至没有显示在调试日志中 谢谢你的建议C# Unity碰撞检测-添加碰撞的GUI分数?,c#,unity3d,collision,detection,C#,Unity3d,Collision,Detection,我正在Unity做一个弹球游戏,我有一个问题。当弹球与圆柱体碰撞以增加分数时,它不起作用。我在Unity中标记了圆柱体,并将此脚本附加到弹球上。它甚至没有显示在调试日志中 谢谢你的建议 using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.SceneManagement; public class Score : MonoBehaviour { public int scoreP
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Score : MonoBehaviour {
public int scorePoint = 10;
public int MaxScore;
public Text ScoreText;
// Use this for initialization
void Start () {
ScoreText = GetComponent<Text>();
ScoreText.text = "Score: " + scorePoint;
}
void OnTriggerEnter (Collider other)
{
if (other.gameObject.tag == "Cylinder")
{
Debug.Log("Collision detected");
scorePoint+=10;
}
}
// Update is called once per frame
void Update()
{
}
}
使用UnityEngine;
使用系统集合;
使用UnityEngine.UI;
使用UnityEngine.SceneManagement;
公共课成绩:单一行为{
公共int分数=10;
公共int MaxScore;
公共文本;
//用于初始化
无效开始(){
ScoreText=GetComponent();
ScoreText.text=“分数:”+分数点;
}
无效对撞机(对撞机其他)
{
if(other.gameObject.tag==“圆柱体”)
{
Debug.Log(“检测到冲突”);
分数+=10分;
}
}
//每帧调用一次更新
无效更新()
{
}
}
确保每个对象上都有一个长方体碰撞器。只有当两个盒碰撞器相互碰撞时,才会调用OnTiggerEnter。这是最有可能的罪魁祸首为什么它不工作,但没有更多的信息,我不能保证它 所以我放大了碰撞器的大小,它成功地触发并显示在调试日志上!然而,分数仍然停留在零。是否有逻辑错误导致此问题?您正在增加内存中的分数,但从未更新文本。在if语句中,将ScoreText.text=scorePoint设置为0,而不是以10开头,这可能是因为在inspector中将其设置为0。如果您不想在inspector中编辑数字,请将变量设置为private。因此,当我将碰撞器设置为“is trigger”时,我了解到碰撞被检测到。但是,当选中该框时,球会直接穿过对象,控制台会显示“NullReferenceException:对象引用未设置为对象Score.OnTriggerEnter(UnityEngine.Collider other)(位于Assets/Score.cs:24)”关于如何正确设置触发事件的框碰撞器,有很多教程。我建议看几部。你知道,当你的问题在Unity回答中因为合理的理由和解决问题的线索而被拒绝时,看到你在StackOverflow上提出完全相同的问题是相当令人失望的。不能做一点研究来解决你的问题不会让你走得很远。跳跳虎和碰撞也不是一回事。。。尝试使用onCollisionCenter()
@Hellium,我会通知媒体的。