2012-12-06 32 views
0

我正在寫一個非常簡單的函數,我應該找到兩個3 d點之間的距離。一組點直接作爲浮點數給出,而其他點則作爲水平數組給出。unityscript函數。對象不支持切片錯誤

三個輸入是x,y,z,它們是浮點數和一個作爲參數[[blue1],441.2223,231.44,127.7466] 傳遞的行拾取器[0]現在,該行以當然是對象。我在計算距離時遇到問題:我的代碼截至目前爲:\

function distance(x,y,z,par) 
{ 
var p:float; 
p=Mathf.Sqrt((x-parseFloat(par[1].ToString())) * (x-parseFloat(par[1].ToString())) +   (y-parseFloat(par[2].ToString())) * (y-parseFloat(par[2].ToString())) + (z-parseFloat(par[3].ToString())) * (z-parseFloat(par[3].ToString()))); 
return p; 
} 

請儘量幫助我。

+0

您確定這是JavaScript嗎?我之前沒有見過'Mathf'和'var p:float'。 – Blender

+0

這是團結的Javascript ...這不是我的家庭作業:) ..我剛開始使用這個,並得到一個奇怪的錯誤...大聲笑是啊,我現在可以理解你爲什麼會猜測.. –

回答

0

錯誤與var p:float;有關,您不需要嘗試並預先聲明變量p,因爲javascript是無類型的。參考文獻引用static function Sqrt (f : float) : float的是,它期望一個變量是一個浮點數並返回一個浮點數。你的代碼應該寫成:

function distance(x,y,z,par) 
{ 
    var p = Mathf.Sqrt((x-parseFloat(par[1])) * (x-parseFloat(par[1])) + (y-parseFloat(par[2])) * (y-parseFloat(par[2])) + (z-parseFloat(par[3])) * (z-parseFloat(par[3]))); 
    return p; 
} 

你也不需要toString()你的參數,因爲它們將被解析成一個float。