Traumachicken

12/01/2011

Unity: Behavior TreesのライブラリBehave

Unity用Behavior TreesのライブラリBehave
サイトは

Behavior Treesの説明は

使い方はCollectionを作って
中にTreeを作ると
エディタでツリーをいじれる

ツリーはBuild libraryボタンを押して吐き出せば
スクリプトから使えるようになる




スクリプトはこんな感じ

using UnityEngine;
using System.Collections;
using Behave.Runtime;
using Tree = Behave.Runtime.Tree;

public class NewBehaviourScript : MonoBehaviour, IAgent
{
 Tree m_Tree;
 // Use this for initialization
 IEnumerator Start () {
  m_Tree = BLNewBehaveLibrary0.InstantiateTree (
   BLNewBehaveLibrary0.TreeType.NewCollection1_NewTree2 ,
   this
  );
  
  while (Application.isPlaying && m_Tree != null)
  {
   Debug.Log( m_Tree.Frequency );
   //~ yield return new WaitForSeconds( 1.0f / m_Tree.Frequency );
   yield return new WaitForSeconds( 1.0f / 1 );
   AIUpdate();
  }
 }
 
 void AIUpdate ()
 {
  Debug.Log( "update" );
  // one action been ticked.
  m_Tree.Tick();
 }
 
 public BehaveResult Tick (Tree sender, bool init)
 {
  Debug.Log ( "got ticked" );
  Debug.Log (
   (BLNewBehaveLibrary0.IsAction (sender.ActiveID) ? "action" : "decorator" )
  );
  
  return BehaveResult.Success;
 }
 
 public void Reset (Tree sender)
 {
 
 }
 
 public int SelectTopPriority (Tree sender, params int[] IDs)
 {
  return IDs[0];
 }
 
 public BehaveResult TickFirstAction (Tree sender)
 {
  Debug.Log("First!");
  return BehaveResult.Success;
 }
}

0 件のコメント: