other | 与该碰撞关联的 Collision2D 数据。 |
当传入碰撞体与该对象的碰撞体接触时发送(仅限 2D 物理)。
在调用期间传入的 Collision2D 参数中报告有关碰撞的进一步信息。如果不需要该信息,则可以声明没有参数的 OnCollisionEnter2D。
注意:碰撞事件将发送到已禁用的 MonoBehaviour,以便允许启用 Behaviour,以响应碰撞。
另请参阅:Collision2D 类、OnCollisionExit2D、OnCollisionStay2D。
以下两个脚本示例创建了一个 OnCollisionEnter2D 演示。
Example1 生成一个名为 GameObject1
的白色 box
精灵。
该精灵与 Example2 的 GameObject2
(floor
精灵)碰撞。可以使用上、下、左、右键移动 box
精灵。
例如,当 box
落到 floor
时,可以用向上键将其向上推。
松开向上键后,box
将再度落向 floor
。
每当 box
撞到 floor
,都将调用 OnCollisionEnter2D。
GameObject1
只是在控制台中提供一个字符串,
表示发生了碰撞。
using UnityEngine;
// Create a box sprite which falls and hits a floor sprite. The box can be moved/animated // with the up, left, right, and down keys. Moving the box sprite upwards and letting it // fall will increase the number of calls from OnCollisionEnter2D.
public class Example1 : MonoBehaviour { public Texture2D tex;
void Awake() { SpriteRenderer sr = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer; transform.position = new Vector3(0.0f, 2.5f, 0.0f);
Sprite sp = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f); sr.sprite = sp;
gameObject.AddComponent<BoxCollider2D>();
Rigidbody2D rb = gameObject.AddComponent<Rigidbody2D>(); rb.bodyType = RigidbodyType2D.Dynamic; }
void FixedUpdate() { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical");
gameObject.transform.Translate(moveHorizontal * 0.05f, moveVertical * 0.25f, 0.0f); }
// called when the cube hits the floor void OnCollisionEnter2D(Collision2D col) { Debug.Log("OnCollisionEnter2D"); } }
Example2 用于创建地板。
using UnityEngine;
public class Example2 : MonoBehaviour { public Texture2D tex;
void Awake() { SpriteRenderer sr = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer; transform.position = new Vector3(0.0f, -2.0f, 0.0f);
Sprite sp = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f); sr.sprite = sp;
gameObject.AddComponent<BoxCollider2D>(); } }
这两个对象存储为 GameObject,每个对象附加上述脚本之一。 这些 GameObject 仅从它需要的脚本示例开始。 Example1 应用于 GameObject1,Example2 应用于 GameObject2。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.