###前提・実現したいこと
unityのjavascriptで、位置情報を入力してモデルを飛行させるプログラムを改良することになりました。
位置情報を外部txtを利用して配列を読み込みたいのですが、function start にある値が
function Update に反映されません。どう改良すればよろしいでしょうか?
###発生している問題・エラーメッセージ
function start にある xposition,yposition,zposition,fangle,tangle,pangle の値が
function Updateに反映されない。
エラーメッセージ
なし
###該当のソースコード
#pragma strict
import System;
import System.IO;
import System.Text;
var counter = 0;
var iposition = 0;
var delt = 0.01;
var mcount = 100;
var delx = 0.0;
var dely = 0.0;
var delz = 0.0;
var delf = 0.0;
var delth = 0.0;
var delp = 0.0;
var xposition = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];
var yposition = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];
var zposition = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];
var fangle = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];
var tangle = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];
var pangle = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0];
function Start () {
iposition =0;
counter = 0;
mcount = 50;
delt = 1.0/mcount;
delx =0;
dely =0;
delz =0;
delf =0;
delth =0;
delp =0;
//read xposition
var srx:StreamReader;
srx = new StreamReader(Application.dataPath + "/xposition.txt"); var txtx = srx.ReadToEnd(); var xposition = txtx.Split(","[0]); srx.Close(); //read yposition var sry:StreamReader; sry = new StreamReader(Application.dataPath + "/yposition.txt"); var txty = sry.ReadToEnd(); var yposition = txty.Split(","[0]); sry.Close(); //read zposition var srz:StreamReader; srz = new StreamReader(Application.dataPath + "/zposition.txt"); var txtz = srz.ReadToEnd(); var zposition = txtz.Split(","[0]); srz.Close(); //read fangle var srf:StreamReader; srf = new StreamReader(Application.dataPath + "/fangle.txt"); var txtf = srf.ReadToEnd(); var fangle = txtf.Split(","[0]); srf.Close(); //read tangle var srt:StreamReader; srt = new StreamReader(Application.dataPath + "/tangle.txt"); var txtt = srt.ReadToEnd(); var tangle = txtt.Split(","[0]); srt.Close();
//read pangle
var srp:StreamReader; srp = new StreamReader(Application.dataPath + "/pangle.txt"); var txtp = srp.ReadToEnd(); var pangle = txtp.Split(","[0]); srp.Close();
}
function Update () {
if(counter >= mcount){
counter=0;
iposition++;
delx =deltxposition[iposition];
dely =deltyposition[iposition];
delz =delt*zposition[iposition];
delf =180/3.14*(fangle[iposition]-fangle[iposition-1]);
delth =180/3.14*(tangle[iposition]-tangle[iposition-1]);
delp =180/3.14*(pangle[iposition]-pangle[iposition-1]);
transform.Rotate(delf,delp,-delth);
}else{
counter++;
}
transform.Translate(delx,delz,dely);
}
###試したこと
function Startにxposition,yposition,zposition,fangle,tangle,pangleの値を直接入力するとちゃんと動作した。
txtを配列化しないといけないと思い、Splitを追加してみたが、function Updateに反映されなかった。
print(xposition[iposition]);を使い、xposition[iposition]の動作を確認したが、0がずっと表示されるだけだった。
###補足情報(言語/FW/ツール等のバージョンなど)
unity5.6.1内のjavascriptを使用
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/28 11:57
2017/12/28 12:40
2017/12/28 16:13
2018/01/09 07:25