У меня была эта проблема с моей текущей игрой.
Проблема в том, что когда мой игрок (Ракета) сталкивается с Астероидом (Врагом), игрок должен убить ie и перезапустить уровень но это не работает, даже если я поставил своему игроку коллайдер коробки без триггера, а мой астероид - триггер и круговой коллайдер. Я также попытался поставить астероид с триггером и игрока без триггера, и оба они с триггерами, но моя Ракета каждый раз просто проходит через астероид. В окне консоли ошибок нет. И ниже приведен код, который я использую для этого. ОБНОВЛЕНИЕ: Я воспользовался советами всех и разобрал код, оглядываясь назад, и я должен был заметить, что включение «OnTriggerEnter» в метод обновления не сработает, но в любом случае и Ракета, и Астероид. есть компонент "Rigibody", и когда игрок сталкивается с астероидом, он исчезает и не перезагружается, и я начал писать точку возрождения, но появляется ошибка "ошибка CS1955: неактивный член" Transform.position 'нельзя использовать как метод ". Это обновленный код.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Movement : MonoBehaviour
{
public float speed = 6.0f;
public GameObject character;
private Animator anim;
private Vector3 Respawnpoint;
private void OnCollisionEnter2D(Collision2D collision)
{
switch (collision.gameObject.tag)
{
case "Enemy":
Destroy(gameObject);
break;
default:
//nothing
break;
}
}
void Start()
{
anim = GetComponent<Animator>();
Respawnpoint = transform.position();
}
void Update()
{
if (Input.anyKey)
{
transform.Translate(Vector3.forward * Time.deltaTime * speed);
}
if (Input.GetKeyDown(KeyCode.D))
{
transform.position += Vector3.right * speed * Time.deltaTime;
anim.SetBool("Isright", true);
}
if (Input.GetKeyDown(KeyCode.A))
{
transform.position += Vector3.left * speed * Time.deltaTime;
anim.SetBool("Isleft", true);
}
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += Vector3.right * speed * Time.deltaTime;
anim.SetBool("Isright", true);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position += Vector3.left * speed * Time.deltaTime;
anim.SetBool("Isleft", true);
}
else
{
}
}
}