2010-07-14 20 views
10

Desidero che il mio script di inizializzazione crei sensori/controller/attuatori aggiuntivi necessari per un'applicazione Blender interattiva (non necessariamente un gioco). Questo è preferibile per due motivi:Come creare i blocchi logici in modo programmatico in Blender?

  • Posso usare questo script in più applicazioni. Creare una logica comune all'infinito è noioso. E non c'è altro modo per importare AFAIK.
  • Avere i miei moduli Python per creare blocchi logici è molto più facile e comodo per me dato che sono un programmatore. (... e il codice può essere controllato in versione, peer-reviewed, facilmente documentato, ecc.)

La creazione di un file modello in parte risolve il primo problema. Ma poi non posso combinare parti diverse per progetti diversi, o devo creare un modello per ogni possibilità.

Ho cercato sia il Game Engine docs e il Python API ma non ho trovato alcun indizio. I metodi __init__ di mattoni logici non sono nemmeno elencati qui.

Ma se esiste un modo per creare dinamicamente blocchi logici all'interno di Python, mi piacerebbe provarlo.

NOTA: con la mia conoscenza limitata di BGE, non è possibile, ad esempio, accedere alla pressione dei tasti direttamente da Python. È richiesto un sensore

risposta

2

Quindi - così com'è, non c'è modo di creare i blocchi logici direttamente da Python.

Quando si istanzia un oggetto in BGE (come con un attuatore di oggetto aggiuntivo), i mattoni logici dall'oggetto istanziato vengono con esso - e si può cambiare e riorganizzare quelli - compreso il ricablaggio di sensori, controler e attuatori

Penso che questa sia la soluzione corrente: si crea una matrice vuota di generici Senor, controlers e attuatori, e quando si aggiungono nuovi oggetti in una scena, chiamare una funzione che fill-nei parametri per i blocchi logici e da fare il cablaggio richiesto.

+1

Grazie per la risposta. Ma non sono sicuro di capire il metodo che hai menzionato. Può dare un esempio più concreto? – muhuk

+0

Grazie gentilmente, signore! –

Problemi correlati