Pagina 1 di 1

IA che riconosce gli ambienti

Inviato: 05/10/2015, 17:48
da cp94
Ciao a tutti, ho un problema per quanto riguarda la creazione di un IA e dei suoi comportamenti.
Ciò che voglio realizzare è la costruzione di un particolare della mia IA, ovvero il riconoscimento dell'ambiente.
Praticamente io ho questo bot che sta all'interno di un edificio (2d) di cui io non posso in alcun modo prevedere ne forme ne disposizione di oggetti (quindi niente metodi a waypoints)
Il problema è che il bot deve saper riconoscere gli spazi intorno ad un oggetto di interesse, e non sto parlando di pathfinding.
Per esempio se il bot vuole guardare la tv o vuole ballare davanti ad uno stereo ma lo spazio è occupato, non lo farà. Il punto sta nel calcolare questo spazio.
Secondo voi qual'è il metodo migliore per implementare ciò?
Dite che è meglio andare di collision checking o fare un riconoscimento di qualche altro tipo?

:cappa:

Re: IA che riconosce gli ambienti

Inviato: 05/10/2015, 23:42
da Solid Snake
Praticamente stai facendo un The Sims :asd:

Comunque per il tuo problema, che non puoi prevedere la disposizione deglio oggetti va bene, ma non hai modo di ricavarla? E se per interagire con l'oggetto prima fai un check sulla posizione? Mi spiego meglio:
Suppongo che stai ancora utilizzando Unity:
Classe Bot:

Codice: Seleziona tutto

//Pseudo codice
[...]

private void usa_oggetto(Oggetto obj[...])
{
    posX=obj.usePosX.x;
    posY=obj.usePosY.y;

    if (posizione_libera(posX, posY))
    {
         utilizza_oggetto(obj);
    }
    else
    {
        //Oggetto occupato
    }
}

[...]
Classe Oggetto:

Codice: Seleziona tutto

//Pseudo codice
[...]
public float usePosX=x+10//Esempio...
public float usePosY=y+10
[...]
Il tutto puo' essere adattato anche ad un griglia se necessario... :asd:

Re: IA che riconosce gli ambienti

Inviato: 06/10/2015, 10:51
da cp94
Siccome le IA si devono disporre un un punto qualsiasi davanti all'oggetto interessato avevo pensato ad una cosa tipo:
1. controllo se l'oggetto è raggiungibile
2. se lo è, mando dei raggi di lunghezza definita dall'oggetto in tutte le direzioni, rilevando gli ostacoli intorno
3. l' IA andrà in un punto libero qualsiasi di questi raggi

Se c'è qualcuno che ha qualche altra idea che non sia quella di testare tutte le collisioni, o un metodo più efficiente, si faccia avanti :lol:

Re: IA che riconosce gli ambienti

Inviato: 06/10/2015, 18:35
da Jak
Vorresti testare le collisioni... senza testare le collisioni?
Il metodo efficiente è quello che ha detto snake, fatti una griglia così ti basta vedere le poche celle disponibili intorno agli elementi interessati.
Se hai ambienti enormi puoi anche fare griglie o liste di elementi presenti nelle vicinanze di ogni elemento specifico e dopo fare un paio di if. E' estremamente facile ottenere un costo quasi nullo, sopratutto se non devi farlo ogni frame per millemila oggetti.

Re: IA che riconosce gli ambienti

Inviato: 07/10/2015, 21:52
da Tizzio
The sims usa una griglia