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 OnCollisionInter2D未被调用_C#_Unity3d_Unity3d 2dtools - Fatal编程技术网

C# Unity OnCollisionInter2D未被调用

C# Unity OnCollisionInter2D未被调用,c#,unity3d,unity3d-2dtools,C#,Unity3d,Unity3d 2dtools,我遇到了迎面相撞的问题。我刚从Unity开始,我想我可以拼凑一个简单版本的pong,从基础开始。在一个附加到球的脚本中,我有一个OnCollisionInter2D方法,但它没有被调用 在看过其他有这个问题的帖子后,我取消了“是运动学的”,并将重力设置为0。取消选中“Is Kinetic”后,我必须检查后壁上的x、y和z约束,以防止它被球击倒。球有一个“圆形碰撞器2d”组件,墙有一个“长方体碰撞器2d”组件。它们都有非运动学刚体2D组件。另一个类似问题的答案是检查不同层之间的碰撞是否启用。它们都

我遇到了迎面相撞的问题。我刚从Unity开始,我想我可以拼凑一个简单版本的pong,从基础开始。在一个附加到球的脚本中,我有一个OnCollisionInter2D方法,但它没有被调用

在看过其他有这个问题的帖子后,我取消了“是运动学的”,并将重力设置为0。取消选中“Is Kinetic”后,我必须检查后壁上的x、y和z约束,以防止它被球击倒。球有一个“圆形碰撞器2d”组件,墙有一个“长方体碰撞器2d”组件。它们都有非运动学刚体2D组件。另一个类似问题的答案是检查不同层之间的碰撞是否启用。它们都在同一层上

我肯定我错过了一些简单的东西,但我真的很难受。这是我在设计更丰满一点的东西之前,迅速拼凑起来的东西如果有人能帮我,我会非常感激。代码和组件如下:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class BallController : MonoBehaviour {
    public float speed;
    public Text scoreText;
    private int score;

    // Use this for initialization
    void Start () {
        Rigidbody2D rb2d = GetComponent<Rigidbody2D>();
        Vector2 movement = new Vector2(1, 1);
        rb2d.AddForce(movement * speed);
        score = 0;
        scoreText.text = "Score: " + score.ToString();
    }

    // Update is called once per frame
    void Update () {

    }

    void OnCollisionEnter2d (Collider2D other)
    {
        scoreText.text = "test"; // added this line just to see if the method was being called at all
        if (other.gameObject.tag == "BackWall")
        {
            score = score + 1;
            scoreText.text = "Score: " + score.ToString();
        }
    }
}
使用UnityEngine;
使用系统集合;
使用UnityEngine.UI;
公共类BallController:单行为{
公众浮标速度;
公共文本;
个人智力得分;
//用于初始化
无效开始(){
Rigidbody2D rb2d=GetComponent();
向量2移动=新向量2(1,1);
rb2d.附加力(移动*速度);
得分=0;
scoreText.text=“Score:+Score.ToString();
}
//每帧调用一次更新
无效更新(){
}
无效OnCollisionInter2D(已碰撞的R2D其他)
{
scoreText.text=“test”;//添加此行只是为了查看是否调用了该方法
if(other.gameObject.tag==“后壁”)
{
分数=分数+1;
scoreText.text=“Score:+Score.ToString();
}
}
}


很抱歉,由于没有代表,我无法将图像内联粘贴。

正确的语法是OnCollisionInter2D(Collision2D collision)

您将OnCollisionInter2D(Collizer2D其他)放入

如果函数拼错了,Unity将无法识别该函数,即使拼错的程度很小

(你不会相信我自己有多少次沦为这样的牺牲品。)


相关链接:

对不起,考虑到我检查了多少次语法,我真不敢相信我错过了。顺便说一句,为什么编译器没有给出一个错误,说没有重载方法接受这个参数?C#没有检查吗?Unity只是认为您定义了自己的方法,因为您的拼写有点不同。如果函数拼写相同,但要求使用不同的参数,则会出现错误。