unity中玩家扇形攻擊範圍

2021-07-29 19:06:04 字數 1305 閱讀 4437

在unity rpg遊戲中,經常會有主角或者boss什麼的會發動技能攻擊,除了有攻擊的距離以外,肯定會有攻擊的扇形範圍。本篇部落格就給大家簡單的講解一下範圍。

這個是出來60度角的視線範圍,在主角的60度角裡面,可以去判斷是否可以發動攻擊,並且用射線來檢測target是否在範圍之內。

這裡用了兩條debug.drawline來繪製兩條紅色的線,用來顯示所在的區域。

//檢測扇形角度

float distance = vector3.distance(target.transform

.position, transform.position);

quaternion right = transform.rotation * quaternion.angleaxis(30, vector3.up);

quaternion left = transform.rotation * quaternion.angleaxis(30, vector3.down);

vector3 n = transform.position + (vector3.forward * distance);

vector3 leftpoint = left * n;

vector3 rightpoint = right * n;

debug.drawline(transform.position, leftpoint, color.red);

debug.drawline(transform.position, rightpoint, color.red);

檢測的**還是很少的,先貼出來

vector3 targetdir = target.transform.position - transform.position;

vector3 forward = transform.forward;

float angle = vector3.angle(targetdir, forward);

if (angle < 30.0f)

targetdir 指的是目標方向, 而forward 是指的是玩家朝著的方向,在範圍為30度的大小裡面就可以發動攻擊了。

把這段**放在update()裡面呼叫就可以了,就可以出現主角攻擊的範圍在正向60度的樣子了

《Unity網路多玩家遊戲開發教程 上冊 》

unity網路多玩家遊戲開發教程 上冊 我們的宗旨是 我們只做最專業的技術傳播者!為了讓廣大程式設計師花最少的時間,掌握最新的技術!unity網路多玩家遊戲開發教程 上冊 目錄 第1章 unity自帶網路功能 例項 桌球遊戲 1 1.1 實現機制 1 1.1.1 networkview元件 1 1....

關於unity中BindChannels的理解

官方文件 乙個博主的部落格 其實 bindchannels 命令主要幹的事情,就是可以重新對映繫結語義的資料來源和目標硬體。部落格裡所舉的例子 就是改變了texcoord 紋理座標 儲存資料的位置順序。因為unity中一般會把 lightmap 的 uv 存在第2個texcoord中,也就是texc...

Unity中 噪音演算法

主要是利用 unity 的mathf.perlinnoise 函式 柏林雜訊 的不同尋常的功能。其中乙個例項 是生成 柏林雜訊。第二個例項是動畫效果 看似y軸 的隨機運動,對隨機的動畫來講很好啊!這樣設定 得到 函式的返回值是 0 12 一樣的輸入,輸出也必將是一樣的 比如下面的測試,輸出一直是 0...