Мне нужна помощь с функцией, которую я реализую для игры, сделанной в Unity 2D. Игрок должен взять ключ, чтобы открыть дверь (возможно, показывая анимацию), и когда игрок идет к этой двери, если у него есть ключ, он автоматически перейдет на следующий уровень. Мне нужна помощь, потому что дверь не позволяет перейти на следующий уровень.Перейти на следующий уровень, когда Key захвачен Player Unity 2d
Вот ключ код/скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class KeyScript : MonoBehaviour {
//public AudioSource coinSoundEffect;
public AudioClip key1;
void Awake() {
//source = GetComponent<AudioSource>();
}
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
}
void OnCollisionEnter2D (Collision2D other) {
Debug.Log("Chiave Presa");
if(other.gameObject.tag =="Player")
GameObject.Find("KeyDoor").SendMessage("HitKey");
SoundManager2D.playOneShotSound(key1);
}
}
Вот ДВЕРЬ код/скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class DoorScript : MonoBehaviour {
public bool key = false;
public string nextLevelName;
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
}
void HitKey(){
Debug.Log("La porta è sbloccata");
key = true;
Destroy (GameObject.Find ("Key"));
}
void OnCollisionEnter2D (Collision2D other){
if(other.gameObject.tag == "Player"){
if (key == true){
Application.LoadLevel(nextLevelName);
//Destroy(gameObject);
//GameObject.Find("Key").SendMessage("DestroyKey"); //If you also want to destroy the key
//GoToNextLevel();
}
}
}
void OnTriggerEnter2D (Collision2D other)
{
Application.LoadLevel(nextLevelName);
}
public virtual void GoToNextLevel()
{
//loadingImage.SetActive(true);
Application.LoadLevel(nextLevelName);
}
}
код работает, но когда игрок идет перед дверью, он не переходя на следующий уровень. Любая помощь или подсказка оценены. Приветствия
Вы пробовали 'GameObject.Find (« KeyDoor »). GetComponent() .SendMessage (« HitKey »);'? Или просто «GameObject.Find» («KeyDoor»). GetComponent () .key = true; ' –
@ m.rogalski Я поставил этот GameObject.Find (« KeyDoor »). GetComponent по ключевому скрипту, но все еще не работает , –
Вы уверены, что у всех 'GameObject' есть свои '' Collider 's прилагается и работает? –