У меня есть простая сцена в 2D. Правая желтая коробка - это «игрок», а зеленая и коричневая вещь - это «препятствие».
У игрока есть Bodecollider2d , жесткий Code2d и сценарий C# с именем hero.cs прикреплен к нему. BoxCollider2d включен Trigger ; Rigidbody2d включен Kinematics ; Другие настройки остаются в значениях по умолчанию. < /p>
препятствие имеет только Boxcollider2d < /code> с IS -триггером < /code> включен.using UnityEngine;
using System.Collections;
public class Hero : MonoBehaviour {
public float moveSpeed = 0.1f;
private Vector3 moveDirection;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Vector3 currentPos = transform.position;
if(Input.GetKey("left")) {
transform.Translate(new Vector3(-1, 0, 0));
} else if(Input.GetKey("right")) {
transform.Translate(new Vector3(1, 0, 0));
}
}
void OnCollisionEnter2D(Collision2D collision) {
Debug.Log("Colliding");
}
void OnTriggerEnter2D(Collider2D other) {
Debug.Log("Triggering");
}
}
< /code>
Только «запуск» появляется в журнале консоли. < /p>
Мой вопрос: < /strong> Что я должен добавить, чтобы сделать «игрок» недоступным для «Опугарования» (использование un not to aky)? />
Обновление: после того, как я установил масштаб гравитации < /code> на 0 < /strong>, обнаружение столкновений работает, но странным образом. «Игрок» идут боковым путем во время столкновения. Посмотрите это видео на YouTube для действия. Что я пропустил?>
Подробнее здесь: https://stackoverflow.com/questions/241 ... n-unity-3d