Я решил добавить скрипт не на сами объекты, а на другой объект, который является родителем этих объектов, но OnTriggerOnter2D не работает, я даже указывал в условии: если соприкасаются объекты с тегами, то происходит то-то.
Но скрипт работает если я добавляю его на сами объекты дочерние.
OntriggerEnter2D не может работать с посторонними объектами, а только с теми, которые имеют скрипт с этим самым триггерenter'ом?
И еще, почему-то, если нацепить скрипт на дочерние объекты, то при взаимодействии с заданным коллайдером игра зависает намертво, но ведь бесконечных циклов у меня нет.
Если что, вот сам кодusing System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CathingItems : MonoBehaviour
{
PlayerMove moving;
// public GameObject box;
public Image hp1;
public Image hp2;
public Image hp3;
public GameObject box1;
public GameObject box2;
public GameObject box3;
public GameObject box4;
public int score = 0;
int nightcore = 0;
public Text coinvalue;
public int hp = 3;
public Text hpp;
void Start()
{
//hpp = GetComponent<Text>();
moving = GameObject.Find("BoxColl").GetComponent<PlayerMove>();
hp = 3;
}
void getScore()
{
coinvalue.text = score.ToString();
}
void hpCheck()
{
if (hp == 0)
{
hp1.enabled=false;
hp2.enabled = false;
hp3.enabled = false;
}
if (hp == 1)
{
hp1.enabled = true;
hp2.enabled = false;
hp3.enabled = false;
}
if (hp == 2)
{
hp1.enabled = true;
hp2.enabled = true;
hp3.enabled = false;
}
if (hp == 3)
{
hp1.enabled = true;
hp2.enabled = true;
hp3.enabled = true;
}
}
void Update()
{
if (hp == 0) Debug.Log("Dead");
nightcore = score;
}
private void OnTriggerEnter2D(Collider2D collision)
{
while (true)
{
if (collision.gameObject.tag == "shirt" && box1)
{
if (score < 0) score = 0;
score += 1;
getScore();
Debug.Log("hi");
}
else
{
score -= 1;
if (score < 0) score = 0;
getScore();
}
if (collision.gameObject.tag == "sock" && box2)
{
if (score < 0) score = 0;
score += 1;
getScore();
}
else
{
score -= 1;
if (score < 0) score = 0;
getScore();
}
if (collision.gameObject.tag == "jeans" && box3)
{
if (score < 0) score = 0;
score += 1;
getScore();
}
else
{
score -= 1;
if (score < 0) score = 0;
getScore();
}
if (collision.gameObject.tag == "cap" && box4)
{
if (score < 0) score = 0;
score += 1;
getScore();
}
else
{
score -= 1;
if (score < 0) score = 0;
getScore();
}
if (collision.gameObject.tag == "hpAbi" && gameObject.tag=="boxlayer")
{
if (hp >= 3) hp = 3;
hp++;
hpCheck();
hpp.text = hp.ToString();
}
if (collision.gameObject.tag == "hpD" && gameObject.tag == "boxlayer")
{
if (hp <= 0) hp = 0;
hp--;
hpCheck();
hpp.text = hp.ToString();
}
if (collision.gameObject.tag == "speedAbi" && gameObject.tag == "boxlayer")
{
moving.speed++;
Debug.Log(moving.speed);
}
if (collision.gameObject.tag == "speedD" && gameObject.tag == "boxlayer")
{
moving.speed--;
Debug.Log(moving.speed);
}
}
}
}