嗚嗚喔學習筆記

搜尋此網誌

2018年1月13日 星期六

Unity C#6.0 - Unity2017 x .Net4.6

Unity終於支持 .Net4.6了

來測試看看

開發環境 Unity 2017.1.2f1 , VS 2017

File->BuildSettings-> PlayerSettings -> Configuration 
選成.NET 4.6




然後來試試看新語法

看來真的可以使用新語法 ( Null Check 簡化 ) 下方註解的就是舊寫法了



2017年12月3日 星期日

C# Unity 計算兩向量之夾角 (扇形範圍偵測)



/// <summary>
/// 計算兩向量夾腳 0 ~ 360
/// </summary>
/// <param name="A"></param>
/// <param name="B"></param>
/// <returns></returns>
private float Angle_360(Vector3 A, Vector3 B)
{
A.Normalize();
B.Normalize();
// -1 ~ 1
float angle = Vector3.Dot(A, B);
float theta = Mathf.Acos(Vector3.Dot(A, B));

return theta * 360 / Mathf.PI;
}

如果要做個扇形 偵測敵人
需要兩個東西

1. 角度
2. 多遠

所以求得 藍線 紅線 向量之後 就可以用上面的method求出角度了

2017年9月27日 星期三

RainAI 筆記:
Constraint - 條件節點 - 可以用Member當參數
Expression - 設值 (可以做數值運算)
Sequeter - 有 Scuess 依序做
Selector - 有Scuess 跳出
Radom - 隨機選擇

AI Remeber - 可以當動態成員用

WaypointRoute - 要用垂直視角看

http://legacy.rivaltheory.com/api/#
http://legacy.rivaltheory.com/wiki/rainelements/basicmind

CustomAction : RAINAction

2017年9月14日 星期四

UnityShader初體驗 - 12-5 Shader筆記 ( Bloom效果 )

12-5 Shader筆記
Bloom效果




1. 找出較亮的區域
2. 使用高斯模糊 (模擬光暈)
3. 跟原本影像做合成


總共使用4個Pass
1. 找出亮區域


2 和 3 做高斯模糊

4 合成

2017年7月28日 星期五

C# - 從 Linq 學習 [ 如何使用 Delegate , Func , Lambda ) ]

這篇不是在說 怎麼使用 Linq

而是再說嘗試 寫出Linq
------------------------------------------

http://tim12332013.blogspot.tw/2017/06/c-linq-interface-generic.html
繼上一篇 Linq ToList() 學習 Interface 跟 Generic之後
這篇來說說 Where()   
------------------------------------------

這篇主要重點在有三個
1. Delegate - 委派
2. Func - 有回傳值得委派
3. Lambda - 匿名函示 ( 簡化版 )

在知道上述三樣東西之後才會看懂下面在說啥
-------------------------------------------
先貼程式 :



結果: 找出 1~10 中 能被 2 整除的數 (答 2 4 6 8 10)



結論:

利用Foreach IEnumerable<T> 找出所有Item
再拿別人傳進來的 Func 來執行
最後回傳答案

2017年7月7日 星期五

UnityShader初體驗 - 數學基礎 - 笛卡爾座標


最近看了本 "只有unity shader才能超越unity" 紀錄一下心得  0.0

笛卡爾坐標系 - 描述一個東西位置 的方法

Wiki:https://zh.wikipedia.org/wiki/%E7%AC%9B%E5%8D%A1%E5%84%BF%E5%9D%90%E6%A0%87%E7%B3%BB

二維坐標系 (平面空間)

三維坐標系 (3D空間)

三維 通常分成  左手座標 , 右手座標

「左右手座標」的圖片搜尋結果

為什麼要分 左右手的原因就是
在做旋轉的時候 在不同座標下 看起來不一樣
舉例來說
在空間中 用一個點  已一條直線為旋轉軸
旋轉30° 

那會發現有兩種旋轉方向可以選擇
這時候就可以用左右手法則 
依據屬於哪個坐標系
判斷要往哪一邊旋轉大拇指朝上 , 4隻手指的方向 就是答案 

相關圖片

書上練習題 : 

Q: (0,0,1) 座標的點  繞著Y軸 正方向旋轉 ,
在左 , 右 手座標系中 , 分別會變成什麼位置?

A: 左: (1,0,0) 右 (1,0,0)

有錯請指證@@

2017年6月26日 星期一

C# - 從 Linq 學習 [ 如何使用 Interface(介面) 和 Generic(泛型) ]

這篇不是在說 怎麼使用 Linq
而是再說嘗試 寫出Linq
試圖去解析 Linq的寫法
希望帶來一些啟發
可以用在專案上

如果只是想知道如何使用
可以左轉參考這邊
https://kw0006667.wordpress.com/2013/05/29/clinq%E7%B0%A1%E5%96%AE%E4%BD%BF%E7%94%A8-from-where-select/
我覺得這篇寫得還不錯

----------------------------------------------------

這篇用 Linq 的 ToList() 當作範例 :
總歸來說 他使用了三樣東西

1. 擴充函式
2. Interface
3. Generic

在已經知道上述 3 樣東西的是什麼前提下
才會了解下面在說啥

-----------------------------------------------------
切入正題 :

Queue<T> , Statck<T> , T[]
都能夠直接使用Linq語法 ToList()
直接轉換成 List<T> 的形式
為什麼?

因為我們都知道一個規則
兒子Class 可以使用 爸爸Class 的 函式

Queue<T> : IEnumerable<T> 
Stack<T> : IEnumerable<T> 
T[] : IEnumerable<T>

所以基於 ( 因為爸爸有 所以我也有的概念 )
我們直接擴充爸爸就好啦 ~

範例程式碼 :



結果:

 

-------------------------------------------------------------------
結論 :
最終成功山寨了 Linq ToList() 這個Function
至於其他Linq的 Function 也是基於差不多的想法
只是有用到 delegate 等等其他技巧
可能可以再寫一篇 0.0