Re: [閒聊] 到底要怎麼用FSM寫個簡單的AI已回收
問點AI的問題 但跟FSM無關
戰棋所以每次都是Idle的時候執行RunAI()
不過我看之前的專案跟這次的專案流程有一點不同
第一種 :
void Idle.RunAI()
{
ai = unit.AI;
ai.Think();
}
void BattleController.ChangeAI(BattleUnit unit, State state, object params)
{
switch (state)
{
State.Fear:
var ai = new FearAI();
ai.SetParams(params);
unit.AI = ai;
return;
}
}
第二種 :
void Idle.RunAI()
{
switch (unit.state)
{
State.Fear:
if (fearAI == null) fearAI = new FearAI();
ai = fearAI;
ai.SetParams(unit.stateParams);
break;
default:
ai = normalAI;
break;
}
ai.SetEntity(unitEntity);
ai.Think();
}
void BattleController.ChangeAI(BattleUnit unit, State state, object params)
{
unit.state = state;
unit.stateParams = params;
}
第一種每個角色身上都有AI,在角色改變狀態的時候直接把unit.AI置換掉
第二種就Idle裡面塞了一堆AI,輪到角色的時候再把角色的參數丟到AI裡面
兩種做法好像...差不多??
第二種是不是好管理一點啊
--
(づ′・ω・)づ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 150.117.131.129 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1626358834.A.1D0.html
噓
07/15 22:21,
4年前
, 1F
07/15 22:21, 1F
推
07/15 22:26,
4年前
, 2F
07/15 22:26, 2F
推
07/15 22:30,
4年前
, 3F
07/15 22:30, 3F
→
07/15 22:30,
4年前
, 4F
07/15 22:30, 4F
輪到每個角色都會先進Idle 然後才看是要玩家操作還是AI操作 AI的話就跑RunAI這樣
推
07/15 22:33,
4年前
, 5F
07/15 22:33, 5F
→
07/15 22:34,
4年前
, 6F
07/15 22:34, 6F
推
07/15 22:35,
4年前
, 7F
07/15 22:35, 7F
→
07/15 22:35,
4年前
, 8F
07/15 22:35, 8F
→
07/15 22:36,
4年前
, 9F
07/15 22:36, 9F
我研究一下
推
07/15 22:47,
4年前
, 10F
07/15 22:47, 10F
※ 編輯: SecondRun (150.117.131.129 臺灣), 07/15/2021 23:02:46
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):