Wątek przeniesiony 2021-02-14 16:33 z C/C++ przez kq.

Otwieranie drzwi Unity

0

Cześć robię grę w unity. Na chwilę obecną dodaje system otwierania drzwi i szukam pomocy ponieważ nie do końca wiem jak to zrobić. Na chwile obecną do samych drzwi dodałem Collider żeby po wejściu w niego oraz kliknięciu przycisku E drzwi się otwierały. Zrobiłem animacje otwierania oraz zamykania. Napisałem też kawałek kodu ale jeszcze nie umiem pisać bardziej skomplikowanych kodów ponieważ dopiero się uczę i proszę o pomoc w zrobieniu tych drzwi. Będę bardzo wdzięczny

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DrzwiTrigger : MonoBehaviour
{

    public Animator animator;
    public GameObject drzwiZawias;

    void Start()
    {
        animator = (Animator)drzwiZawias.GetComponent<Animator>();
    }



    private void OnTriggerStay(Collider other)
    {
        

    }




}
0
  1. W OnTriggerStay czekaj na naciśnięcie klawisza E:

https://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html
https://docs.unity3d.com/ScriptReference/KeyCode.E.html

  1. Jeśli klawisz E został naciśnięty, to odpal animację przypisaną do odpowiedniego parametru w animatorze:

https://docs.unity3d.com/ScriptReference/Animator.SetTrigger.html
albo
https://docs.unity3d.com/ScriptReference/Animator.SetBool.html

0

Niestety najprawdopodobniej robię coś źle i nie wiem co. Zrobiłem wszystko jak na instrukcji. Nie wiem też gdzie zrobić żeby sama animacja się odpalała

    Animator animator;
    public GameObject drzwiZawias;
    bool OpenDoors;
    void Start()
    {
        animator = gameObject.GetComponent<Animator>();
        OpenDoors = false;
    }

    private void OnTriggerStay(Collider other)
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            


        }
        else
        {
            OpenDoors = false;

        } 


        if(OpenDoors == false)
        {

            animator.SetBool("Otwieranie", false);

        }
        if(OpenDoors == true)
        {
            animator.SetBool("Zamykanie", true); ;


        }       
    }

}

zxzxzxz.png

1
  1. Dlaczego obsługa wciśnięcia klawisza E jest pusta?
        if (Input.GetKeyDown(KeyCode.E))
        {

        }
  1. W animatorze dodałeś parametry typu Trigger, a w kodzie ustawiasz nieistniejące parametry typu Bool. Lepiej w animatorze zrób jeden Bool Otwarte i od jego wartości będzie zależało, czy drzwi się otwierają, czy zamykają. W kodzie będziesz odwoływać się tylko do tego Boola.

1 użytkowników online, w tym zalogowanych: 0, gości: 1