Я использую триггерный коллайдер (circleCollider2D с проверенным триггером), но это только чувствительные коллизии с определенными объектами.Почему в Unity5 мой триггерколлидер2D вызывает только столкновения с определенными объектами, а не с другими?
вот сценарий на курке:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Scoring : MonoBehaviour {
public updateScore updateScore;
Transform earth;
// Use this for initialization
void Start() {
earth = GetComponent<Transform>();
}
void OnTriggerExit2D(Collider2D other)
{
Debug.Log("other collider " + other);
updateScore.score++;
}
}
это восприятия этого объекта:
это 2D объект метеор, который имеет rigidbody2D и circleCollider2D на нем. имеет этот сценарий прилагается:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CometMovement : MonoBehaviour {
public float speed = 0.5f;
Rigidbody2D rb;
Vector2 direction;
// Use this for initialization
void Start() {
direction = new Vector2(Random.Range(10.0f, -10.0f), Random.Range(10.0f, -10.0f));
rb = GetComponent<Rigidbody2D>();
rb.AddForce(direction * speed);
}
}
Но это не ощущает это ниже объекта. Мне нужно это, чтобы почувствовать этот объект ниже:
Это объект земли с жестким корпусом2d и CircleCollider2D, в значительной степени похожий на объект метеора. имеет этот сценарий прилагается:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class EarthController : MonoBehaviour {
public float force = 0.5f;
Rigidbody2D rb;
Vector2 direction;
Transform transform;
// Use this for initialization
void Start() {
direction = new Vector2(0, 4);
transform = GetComponent<Transform>();
rb = GetComponent<Rigidbody2D>();
rb.isKinematic = false;
}
// void OnCollisionEnter2D(Collision2D coll) {
// SceneManager.LoadScene("Level 01");
//
// }
// Update is called once per frame
void Update() {
if(Input.GetButton("Fire1")){
rb.isKinematic = false;
if(transform.position.x <= 0 && transform.position.y <= 4){
direction = new Vector2(0, -4);
} else {
direction = new Vector2(0, 4);
}
rb.AddForce(direction * force);
Debug.Log("going this fast: " + rb.inertia);
} else {
rb.isKinematic = true;
rb.velocity = Vector2.zero;
}
}
}
Эй, спасибо за вашу помощь. Я понял. У меня был DistanceJoint2D также на объекте earth, у которого был флажок «enable collision», который был снят. Я проверил коробку, и теперь она отлично работает –