threeJS開發day02 牆體拉伸

2021-08-01 04:36:32 字數 1340 閱讀 2118

牆體拉伸部分**如下:

function ()  else 

//p、p0、p1為兩條連線的三個點

var p = polygons[i].points[k].point

.clone();

var p0 = polygons[i].points[j].point

.clone();

if (j + 1 >= polygons[i].points

.length) else

var p1 = polygons[i].points[k].point

.clone();

//根據p,p0,p1得出兩條線

var a01 = p.clone().sub(p0.clone());

var a02 = p1.clone().sub(p0.clone());

var matrix = new three.matrix4();

//計算兩條線的夾角,《180°

var angle = math.acos(a01.clone().normalize().dot(a02.clone().normalize()));

var dir = ( p1.x - p.x ) * a01.z - (p1.z - p.z) * a01.x

; //當在下面時,兩方旋轉方向相反,計算出的兩個點也會相反

if(dir>0)

else

cdistance = (300 / 2) / math.sin(angle / 2);

//單位化向量後設定向量的長度使向量到外線的距離為牆體的寬度

a03.normalize();

a04.normalize();

//向量長度相乘

a03.multiplyscalar(cdistance);

a04.multiplyscalar(cdistance);

//得到點並push到陣列中

a03.add(p0);

a04.add(p0);

points.push(a03, a04);

}else else

cdistance = (300 / 2) / math.sin(angle / 2);

a03.normalize();

a04.normalize();

a03.multiplyscalar(cdistance);

a04.multiplyscalar(cdistance);

a03.add(p0);

a04.add(p0);

points.push(a04, a03);}}

}

遊戲開發Day02

在角色對應的指令碼lxmovement中重寫update方法 debug.log horizontal value input.getaxis horizontal vector3 direction input.getaxis horizontal transform.right input.ge...

day02 資料儲存

librarys c和c 的 庫 linux kernel 操作硬體裝置 開發步驟 1.建立android專案 2.設計布局 3.新增事件監聽 4.發布執行 資料儲存 openfileinput string filename 開啟 data data 包名 files目錄下檔案對應的輸入流 sd卡...

設計模式Day02

1 生成器模式 生成器模式也稱為建造者模式。生成器模式的意圖在於將乙個複雜的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。生成器模式的程式設計步驟 1 定義乙個產品類 由於不在該類完成product類物件的建立,所以無需顯示定義構造方法。2 定義n個生成器build類 生成器是用來生成p...