Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity碰撞检测-添加碰撞的GUI分数?_C#_Unity3d_Collision_Detection - Fatal编程技术网

C# Unity碰撞检测-添加碰撞的GUI分数?

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

我正在Unity做一个弹球游戏,我有一个问题。当弹球与圆柱体碰撞以增加分数时,它不起作用。我在Unity中标记了圆柱体,并将此脚本附加到弹球上。它甚至没有显示在调试日志中

谢谢你的建议

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,我会通知媒体的。