Unity OnCollisionEnter2d未被调用

时间:2016-02-27 11:29:02

标签: c# unity3d unity3d-2dtools

我在获取OnCollisionEnter2d时遇到问题。我刚开始使用Unity,并认为我可以将一个简单版本的pong放在一起,只是为了开始基础知识。在我附加到球的脚本中,我有一个OnCollisionEnter2d方法,但它没有被调用。

在查看人们遇到此问题的其他帖子后,我取消选中“Is Kinematic”并将重力设置为0.取消选中“Is Kinematic”后,我必须检查后墙上的x,y和z约束以阻止它被球撞倒了。球有一个“圆形对撞机2d”组件,墙上有一个“Box Collider 2d”组件。它们都具有非Kinematic RigidBody2d组件。对类似问题的另一个答案是说要检查是否启用了不同层之间的冲突。它们都在同一层。

我确信我错过了一些简单的事情,但我真的很难过。这意味着只是快速的东西,我把它扔在一起,然后再设计一些有点肉的东西。 :)如果有人可以帮助我,我会非常感激。代码和组件如下:

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();
        }
    }
}

Ball and back wall components

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

1 个答案:

答案 0 :(得分:1)

正确的语法是OnCollisionEnter2D(Collision2D collision)

你把OnCollisionEnter2d(Collider2D其他)

如果函数拼写错误,Unity将无法识别该函数。

(你不会相信我多少次成为这个的牺牲品。)

相关链接:http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter2D.html

相关问题