Unity3D如何編寫AI

2021-06-20 07:59:43 字數 3122 閱讀 7015

1. unity3d

簡單ai編寫

由於這次介紹的ai

很簡單,**直接貼上,

ai分成四個狀態:思考,轉身,移動,攻擊,這裡只是初步實現,所以想實現簡單點的操作,就像自動範圍內隨機移動,鎖敵攻擊,超出距離復位,近距離察覺等。

1 enemy_ai.js 2

3 private var regression : vector3;

4 public var player_prefab : transform;

5 public var enemy_state : string;

6 public var doing : boolean = true;

7 public var range : float = 4.0;

8 public var bullet : transform;

9 public var bullet_prefab : transform;

10 //

初始化敵人方向和位置

11 function start()

12 16 //

敵人行動模式

17 public var thinking : boolean = true;

18 public var thinking_time : float = 1.0;

19 private var relativepos : vector3;

20 private var rotation : quaternion;

21 public var facing : boolean = false;

22 public var facing_time : float = 2.0;

23 public var facing_speed : float = 2.0;

24 public var moving : boolean = false;

25 public var moving_speed : float = 0.5;

26 public var moving_time : float = 4.0;

27 public var moving_back : boolean = false;

28 public var attacking : boolean = false;

29 private var bullet_do : boolean = true;

30 public var bullet_cd : float = 0.2;

31 //

隨機移動方位

32 private var r_position : vector3;

33 function update ()

34 50 }

51 if(!moving_back)

52 59 else if(dist < 5)

60 63 rayjudge();

64 }

65 transform.localeulerangles.x = 0;

66 transform.localeulerangles.z = 0;

67 if(thinking && !attacking && !moving_back)

68 75 }

76 if(facing)

77 85 else if(moving_back)

86 89 else

90 97 }

98 }

99 if(moving)

100 

106 else if(dist > 2)

107 

112 else

113 

116 }

117 if(doing && !attacking)

118 

122 }

123 }

124 //

前方鎖敵

125 function rayjudge()

126 

143 }

144 }

145 }

146 function wait(waittime : float)

147 

151 function move(waittime : float)

152 

158 else

159 

162 thinking = true;

163 moving_back = false;

164 moving = false;

165 facing = false;

166 doing = true;

167 }

168 function face(waittime : float)

169 

177 function think(waittime : float)

178 

2.unity

學習過程中的一些細節分析 1.

獲取位置座標:當你

translate.position

獲取的不是物體在世界的座標時可以試試

translate. localrotation 2.

改變旋轉角度:這裡多半是用

translate.localrotation= quaternion.euler(x,y,z); 3.

如何更改滑鼠指標,這也是羽化以後可能遇到的問題,這裡只能簡單分析下,首先把滑鼠預設指標隱藏掉

screen.showcursor=flase;

再用個粒子或者代替,具體位置可以用

camera.main.screentoworldpoint()

和input.mouseposition

獲得。但有個問題就產生了,

ui會遮擋滑鼠,滑鼠用

ui代替總感覺不妥。。。所以羽化還沒想出解決方法

- -

4.有關過場

loading

的製作,一張還好說,換個

scene

或者寫個

ui都能解決,動態

loading

的是用可以達到效果,或者是預載入,具體可以看看羽化無縫地圖研究博文裡面的乙個別墅例子。 5.

也許有一天你也會遇到指令碼用

c#編寫時遇到一些莫名其妙的錯誤,所以這裡羽化建議動態指令碼命令最好用

js寫。

Unity3D如何快速入門?

一句話說明下unity是什麼,unity是乙個開發遊戲,主要用於手機遊戲開發的引擎,什麼是引擎,引擎就是工具的意思。在我看來,b 站是乙個非常牛逼的學習 真心的 上面的內容包羅永珍,應有盡有。比如 這套課程從基礎的資料型別講起,到後期的物件導向,正規表示式,包含委託事件特性等高階課程等。非常全面,他...

Unity3D開發(九) Unity3d流光效果

遊戲開 壇 hello game 遊戲開發群 201276069 之前曾經注意過material 中紋理的屬性都有 tiling 和offset 但沒有深究過其用途,今天才知道竟然可以利用 offset做uv 動畫,從而完成各種有趣的動畫,比如流光效果!流過效果即通常一條高光光在物體上劃過,模擬高光...

Unity3D中的AI架構模型

我們都知道現在ai 由人工製造出來的系統所表現出來的模擬人類的智慧型活動 非常的火,可以說是家喻戶曉。當然,在遊戲中,ai也是到處可以找到的,對於ai,我們應該關注的問題是如何讓遊戲角色能夠向人或動物那樣 感知 思考 和 行動 讓遊戲中的角色看上去具有真實的人或動物的反應。實際上,對於遊戲中的ai角...