other | 他の Collider2D がこの衝突に関係しているか。 |
オブジェクトにアタッチしたトリガーの中に別のオブジェクトが入ったときに呼び出されます。(2D 物理挙動のみ)
入ったオブジェクトに関する詳細な情報は呼び出し時に渡される Collision2D 引数に代入されます。
Note: Trigger events will be sent to disabled MonoBehaviours, to allow enabling Behaviours in response to collisions.
関連項目: Collider2D クラス、OnTriggerExit2D、OnTriggerStay2D.
The folllowing two script examples create an OnTriggerEnter2D demo. Example1 generates
a Unity logo sprite, GameObject1
. This sprite is collided with by the Example2 sprite,
GameObject2
. The Example1 script creates the Rigidbody2D. The kinematic mode is used
on this script. Example2 supports the OnCollisionEnter2D method.
This is called when GameObject2 collides with
GameObject1
. The script code for GameObject2
controls the time it takes to collide with
GameObject1
. GameObject2
is animated left-to-right repeatedly. When on the left side
of the screen GameObject2
moves right towards GameObject1
. When these have collided GameObject2
returns back to the left. The left side of the screen is the starting point for GameObject2
.
The right side of the screen is the constant position of GameObject1
. The Example2 script
code makes GameObject2
collide with GameObject1
. GameObject2
stays collided for a short length of time.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Example1 : MonoBehaviour { private BoxCollider2D bc; private Rigidbody2D rb;
void Awake() { SpriteRenderer sprRend = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer; sprRend.color = new Color(0.9f, 0.9f, 0.9f, 1.0f);
bc = gameObject.AddComponent<BoxCollider2D>() as BoxCollider2D; bc.size = new Vector2(1.3f, 1.3f); bc.isTrigger = true;
rb = gameObject.AddComponent<Rigidbody2D>() as Rigidbody2D; rb.bodyType = RigidbodyType2D.Kinematic; }
void Start() { gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("logo"); gameObject.transform.Translate(4.0f, 0.0f, 0.0f); gameObject.transform.localScale = new Vector2(2.0f, 2.0f); } }
Example2. This is the sprite that moves forwards and backwards and triggers with Example1.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Example2 : MonoBehaviour { private float spriteMove;
void Awake() { SpriteRenderer sprRend; sprRend = gameObject.AddComponent<SpriteRenderer>() as SpriteRenderer; sprRend.color = new Color(0.9f, 0.9f, 0.9f, 1.0f);
BoxCollider2D bc; bc = gameObject.AddComponent<BoxCollider2D>() as BoxCollider2D; bc.size = new Vector2(1.3f, 1.3f); bc.isTrigger = true; }
void Start() { gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("circle"); gameObject.transform.Translate(-4.0f, 0.0f, 0.0f); spriteMove = 0.1f; }
void FixedUpdate() { gameObject.transform.Translate(spriteMove, 0.0f, 0.0f);
if (gameObject.transform.position.x < -4.0f) { // move GameObject2 to the right spriteMove = 0.1f; } }
// when the GameObjects collider arrange for this GameObject to travel to the left of the screen void OnTriggerEnter2D(Collider2D col) { Debug.Log(col.gameObject.name + " : " + gameObject.name + " : " + Time.time); spriteMove = -0.1f; } }