unity OnCollisionEnter2d 未被调用
Unity OnCollisionEnter2d not being called
我在获取 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();
}
}
}
抱歉,我还没有内嵌图片,因为我没有代表。
正确的语法是 OnCollisionEnter2D(Collision2D collision)
你把 OnCollisionEnter2d(Collider2D 其他)
Unity 将无法识别即使拼写有轻微错误的函数。
(你不会相信我自己有多少次沦为这个牺牲品。)
相关Link:http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter2D.html
我在获取 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();
}
}
}
抱歉,我还没有内嵌图片,因为我没有代表。
正确的语法是 OnCollisionEnter2D(Collision2D collision)
你把 OnCollisionEnter2d(Collider2D 其他)
Unity 将无法识别即使拼写有轻微错误的函数。
(你不会相信我自己有多少次沦为这个牺牲品。)
相关Link:http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter2D.html