• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Animacja zmienia położenie postaci w unity

0 głosów
93 wizyt
pytanie zadane 25 marca 2021 w OpenGL, Unity przez Macion Nowicjusz (180 p.)

Uczę się dodawania animacji w unity i mam taki, problem, że kiedy animacja działa to postać się nie porusza i nie wiem czego to jest przyczyna. Tutaj mój skrypt do poruszania się postacią:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;
using UnityEngine.UI;

public class ster : MonoBehaviour
{
    public GameObject spadłeś, muzyka, muzykaDoPrzegranej, panel ;
    public Text licznik;
    
    void Start()
    {
        Thread.Sleep(1000);
        Time.timeScale = 1;
        panel.SetActive(false);
        muzykaDoPrzegranej.SetActive(false);
        muzyka.SetActive(true);
        
    }

    
    void Update()
    {
        int licz = int.Parse(licznik.text);
        int szybkość = 7;
        if (licz > 0 && licz < 60)
        {
            szybkość = 7;

        }
        if (licz > 60 && licz < 300)
        {
            szybkość = 9;

        }
        if (licz > 300 && licz < 600)
        {
            szybkość = 11;

        }
        if (licz > 600 && licz < 1000)
        {
            szybkość = 13;
        }
        if (licz > 1000)
        {
            szybkość = 15;
        }
        GetComponent<Rigidbody>().velocity = new Vector3(0, GetComponent<Rigidbody>().velocity.y, szybkość);
        if (Input.GetKey(KeyCode.A))
        {
            GetComponent<Rigidbody>().velocity = new Vector3(-3, GetComponent<Rigidbody>().velocity.y, szybkość);
        }
        if (Input.GetKey(KeyCode.D))
        {
            GetComponent<Rigidbody>().velocity = new Vector3(3, GetComponent<Rigidbody>().velocity.y, szybkość);
        }
        if(transform.position.y < -7)
        {
            spadłeś.SetActive(true);
            muzyka.SetActive(false);
            muzykaDoPrzegranej.SetActive(true);
            Time.timeScale = 0;
        }
        


    }
}

 

1 odpowiedź

+1 głos
odpowiedź 25 marca 2021 przez Bartek12 Mądrala (5,510 p.)

Dzieje się tak, ponieważ animacja zawiera ruch. Ten ruch można wyłączyć gdzieś w opcjach animacji albo w animatorze na węźle, ale nie jestem pewien, bo wieki nie otwierałem unity smiley. Na twoim miejscu bym się zastanowił czy na pewno tak nie jest lepiej. Teraz wystarczy, że skrypt tylko uruchamia animację i tyle.

komentarz 25 marca 2021 przez Macion Nowicjusz (180 p.)
ok, to poszukam tej opcji wyłączenia, bo ogólnie założenie jest takie że ta animacja ma być ciągle włączona i dzięki za  tak szybką odpowiedź.
komentarz 25 marca 2021 przez Macion Nowicjusz (180 p.)
Już znalazłem tą opcję nazywa się Apply Root Motion w animatorze. Jeszcze raz dziękuję bo myślałem, że skrypt będzie trzeba przebudować.

Podobne pytania

+1 głos
0 odpowiedzi 119 wizyt
pytanie zadane 5 kwietnia 2021 w OpenGL, Unity przez anteklego2007 Obywatel (1,030 p.)
0 głosów
0 odpowiedzi 40 wizyt
pytanie zadane 11 lutego 2020 w OpenGL, Unity przez Alan Kruszyński Obywatel (1,410 p.)
0 głosów
0 odpowiedzi 79 wizyt

88,701 zapytań

137,308 odpowiedzi

306,748 komentarzy

58,894 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...