とりあえず、1時間でお絵かきは作れた。mtascのコンパイルすげえ速い。「実は何もしてないんじゃね?」と思わせるぐらい速い。
よくよく考えると、移動はプレゼンハムを使わなくても直線の判定で十分、というかそうでないと困る場面があるので直線で。あと、坂道を上るために「η」の字で移動。すなわち、「上→横→縦」と移動する。最初は「横→縦」だったものの、それだと坂を上れない。副作用として小さな段差も乗り越えるが気にしない。
たぶん今日中に描いた絵の上を点が飛び回るのはつくれるはず。
コードメモ:まとめられる部分もあるが多分このまま行く
var m_X; var m_Y; var m_VX; var m_VY; var m_G; var OVER_HEIGHT = 10; var NowX = m_X; var NowY = m_Y; for(var i:Number = 0; i < OVER_HEIGHT; i++){ if(CollisionCheck(NowX, NowY+1)){ break; } NowY++; } if(m_VX >= 0){ for(var i:Number = 0; i < m_VX; i++){ if(CollisionCheck(NowX+1, NowY)){ m_VX = 0;//必要? break; } NowX++; } }else{ for(var i:Number = 0; i > m_VX; i--){ if(CollisionCheck(NowX-1, NowY)){ m_VX = 0;//必要? break; } NowX--; } } var TrgY = m_Y + m_VY; if(NowY < TrgY){ for(;NowY < TrgY; NowY++){ if(CollisionCheck(NowX, NowY+1)){ m_VY = 0; break; } } }else{ for(;NowY > TrgY; NowY--){ if(CollisionCheck(NowX, NowY-1)){ m_VY = 0; break; } } }
///////////
でけた.原理は単純なのになんかすげぇ.