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

Punkty ruchu i droga do celu w Unity

VPS Starter Arubacloud
0 głosów
311 wizyt
pytanie zadane 4 marca 2020 w C# przez misterbrow Nowicjusz (140 p.)
Witam napotkałem się z problemem ponieważ dopiero zaczynam robić w unity script związane z navmesh ale podczas robienia gry na telefon coś w stylu herosów 3 to nie mogę znaleźć żadnych porad jak zrobić punkty ruchu albo jak wyświetlić trasę po której się będzie poruszać postać. Starałem się też znaleźć na angielskich forach ale nie dałem rady. Proszę o pomoc z znalezieniem jakiś poradników albo udzielenie porad jak to zrobić. Z góry dziękuję za pomoc.
komentarz 4 marca 2020 przez PreZmyK Pasjonat (21,470 p.)

2 odpowiedzi

0 głosów
odpowiedź 4 marca 2020 przez JakSky Stary wyjadacz (14,770 p.)

Najpierw musisz wiedzieć gdzie dana postać ma iść. Możesz użyć do tego NavMesha wbudowanego w Unity. Za pomocą NavMesha możesz "wypiec(bake)" powierzchnie po której może się poruszać postać. 

Skoro wiemy gdzie możemy chodzić to potrzebujemy teraz znaleźć optymalną drogę do celu. Możesz użyć NavMesh Agenta, który to zrobi za Ciebie. Problem w tym, że trasa jest ustalana w czasie rzeczywistym, a ty chcesz mieć z góry ustaloną trasę.

Dlatego najlepiej pobrać informacje o powierzchni po której może poruszać się postać, a następnie znając punkt startowy i docelowy możemy wyznaczyć trasę. Jak?

Najlepiej użyć algorytmu heurystycznego, który nazywa się Algorytm A*

Tu nasz info o nim: Algorytm A*-Wiki

Teraz gdy masz juz trasę, to trzeba jeszcze ją narysować. Aby taka linia była dość przyjemna dla oka, najlepiej użyć krzywych Catmull– Rom, albo krzywych Beziera.

komentarz 4 marca 2020 przez misterbrow Nowicjusz (140 p.)

"Skoro wiemy gdzie możemy chodzić to potrzebujemy teraz znaleźć optymalną drogę do celu. Możesz użyć NavMesh Agenta, który to zrobi za Ciebie. Problem w tym, że trasa jest ustalana w czasie rzeczywistym, a ty chcesz mieć z góry ustaloną trasę."

 

Chodzi tu o to że pierwsze kliknięcie w jakieś miejsce ma podświetlić trasę a kolejne w te same miejsce ma postać się przenieść i trasa będzie się skracać tak jak might and magic heroes 3. Tam też terasa zmienia się z każdą klatką i sam script poruszania mam już zrobiony.

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

public class pathfindingPoint : MonoBehaviour
{

    NavMeshAgent agent;
    RaycastHit ray;
    int klik = 0;

    void Start()
    {
        agent = GetComponent<NavMeshAgent>();
    }

    void Update()
    {   
        if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Ended && klik >= 0)
        {
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out ray, 1000) && ray.collider.CompareTag("Terain"))
            {
                klik += 1;
                if (klik == 2)
                {
                    klik = 0;
                    agent.SetDestination(ray.point);
                }
            }
        }
    }
}

 

Navmesha mam już zrobionego i gotowego tylko jak tu zrobić punkty ruchu które po zakończeniu tury będą się odnawiać

komentarz 4 marca 2020 przez JakSky Stary wyjadacz (14,770 p.)
Co mas, na myśli pisząc "punkty ruchu"? Punkt docelowy, punkt trasy? Czyli ogólnie chcesz, aby postać poruszała się do danego punktu po z góry ustalonej trasie? Punkty docelowe możesz generować sprawdzając czy mieszczą się one na powierzchni NavMesha.
komentarz 4 marca 2020 przez misterbrow Nowicjusz (140 p.)
po pierwszym kliknięciu nav ma wyznaczyć trasę do punktu w który kliknęliśmy i ją wyznaczyć a po drogim ma pójść do tego punktu po tej trasie którą wygenerował nav. A punkty ruchu to coś w stylu staminy że postać poruszając się jej to schodzi powoli od miejsca po jakim chodzi i jak skończą się punkty ruchu to postać już się nie ruszy nie ważne gdzie wskażemy.
0 głosów
odpowiedź 5 marca 2020 przez obl Maniak (51,280 p.)
W Unity nie pisałem, ale w Angularze napisałem gierkę, w której czołg porusza się po ścieżce. Czołg ma ograniczony zasób paliwa (to chyba twoje punty). Gdy czołg przejedzie o jedno pole to odejmuję mu 10 litrów paliwa. Co tu jest trudnego do zrozumienia to pojęcia nie mam. Możesz też zrobić interakcję z terenem po którym się porusza postać i w zależności od terenu zużywać więcej/mniej punktów ruchu. Postać zatrzymuje się gdy nie ma już punktów ruchu wystarczających do przemieszczenia się na kolejne pole wyznaczonej trasy.
komentarz 5 marca 2020 przez misterbrow Nowicjusz (140 p.)
Tu chodzi mi o to że nie wiem jak pobrać koszt przechodzenia po danej arenie i a nie jak to zrobić. Bo w unity jest navmash który pozwala wyznaczyć teren po jakiej obiekt może się poruszać (w tym koszt ruchu) ale jak pobrać ten koszt

Podobne pytania

0 głosów
1 odpowiedź 144 wizyt
pytanie zadane 15 października 2021 w C# przez Iskiereczka Użytkownik (880 p.)
0 głosów
0 odpowiedzi 231 wizyt
0 głosów
0 odpowiedzi 62 wizyt
pytanie zadane 13 czerwca 2022 w C# przez Jakub Zięba 1 Nowicjusz (200 p.)

92,453 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...