【问题标题】:Unity OnCollisionEnter2d not being calledUnity OnCollisionEnter2d 未被调用
【发布时间】:2016-02-27 11:29:01
【问题描述】:

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

在查看人们遇到此问题的其他帖子后,我取消选中“Is Kinematic”并将重力设置为 0。取消选中“Is Kinematic”后,我不得不检查后墙上的 x、y 和 z 约束以阻止它被球击倒。球有一个“circle collider 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

抱歉,由于我没有代表,我还不能内嵌粘贴图片。

【问题讨论】:

    标签: c# unity3d unity3d-2dtools


    【解决方案1】:

    正确的语法是 OnCollisionEnter2D(Collision2D 碰撞)

    你把 OnCollisionEnter2d(Collider2D other)

    即使是轻微拼写错误,Unity 也无法识别函数。

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

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

    【讨论】:

    • 对不起,考虑到我检查了多少次语法,我不敢相信我错过了这一点。顺便说一句,为什么编译器没有给出错误说明没有采用该参数的重载方法? C# 不检查吗?
    • Unity 只是认为您在定义自己的方法,因为您的拼写有点不同。如果您将函数拼写相同但要求输入不同的参数,则会出错。
    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多