谷歌搜索後,我還沒有找到這個問題的答案,所以我要在這裏嘗試。圍繞一個對象在javascript中圍繞一個3d攝像機
使用(2d)畫布我在JavaScript中創建了一個3d世界,甚至還有一臺3D攝像機,它可以很好地工作。但是,相機是一個「免費相機」,因此當您旋轉時,相機會自行旋轉。
現在我想讓相機圍繞一個環境中的物體旋轉,但我很難理解如何做到這一點。
我嘗試下面的公式,但它怪胎之前,我甚至試圖旋轉......
this.x += (Math.sin(this.yd * (Math.PI/180)) * distance);
this.z -= (Math.cos(this.yd * (Math.PI/180)) * distance);
更新,以便FAR 多虧了WojtekT下面提供的anwser,我得到了到下面的代碼,它將攝像機轉向物體周圍,但也似乎放大...這可能只是我的眼睛愚弄我,因爲距離變量幾乎沒有變化(我認爲有一個小圓化問題,但除此之外它給出了預期的結果)
this.y = (Math.sin(this.yd * (Math.PI/180)) * distance + this.targetY);
this.z = (Math.cos(this.yd * (Math.PI/180)) * distance + this.targetZ);
其中this.yd是它應該以度數運行的速度。
我需要什麼配方?
編輯: 我不確定什麼的代碼片段可以幫助解決這個問題,所以這裏是完整的源:
http://clanpvp.com/sol http://clanpvp.com/js/sol/camera.js <相機對象,這可能。
由於調試的原因,當觸發按鍵事件時會加載一個新框架。 也用於調試,目標對象是一個固定點。在屏幕的中心。
箭頭鍵移動相機,WASD鍵開啓相機,至今只有W和S做一些事情,他們這樣做不對由於上面的代碼......
你是什麼意思,'它嚇壞了'? – WojtekT
我不太確定發生了什麼,但相機似乎會向後移動每一幀。我的猜測是,我使用的公式只是錯誤的,所以相機做了一些完全不同的東西,然後我想要 – Johan
你能告訴我們更多的代碼嗎? –