Re: 作類似跳舞機遊戲遇到的一些問題

看板Flash作者 (感情學業麵包何重要?)時間21年前 (2003/12/12 22:21), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
※ 引述《keenlong (keenlong)》之銘言: : 就是有關判斷按的準不准的問題 : 一般說來,DDR遊戲按鈕狀況會依照準度來決定按的分數,像是good,great之類的 : 因為在下對onclipevent還不是很了解,所以想問看看這樣不知可不可行 : onclipevent(enterframe){ : if(key.isdown(key.up) : if(判斷掉下來的箭頭是否有碰到反應區) : if(該箭頭的_y介於100~200,不包含130~160) : 顯示good : if(該箭頭的_y介於130~160) : 顯示great : else : 顯示bad : } : 不過做了一下發現似乎不太可行........想問問看這樣寫是否有很明顯的錯誤??? : (大小寫除外) : 還有箭頭的掉落在下是用手動XD,為了配合一下節奏,這有辦法用複製movieclip來做嗎??? : 懇請解惑 謝謝 : 一直上來問問題,抱歉>"< 以前作過 下面的方法給你參考看看 依照你的方式 將來在複製箭頭的時候會碰到很多問題 諸如時間的搭配或是判斷'個別箭頭'(也就是如果同一個箭頭在場景出現兩次時) 會造成錯誤 假設主場景有兩個影格,兩個圖層 參考範例檔http://web.cc.ntnu.edu.tw/~48970308/ddrteach.fla 先存檔再開啟 Layer1的圖層上,有a,b兩個instance,a是將被複製的影片,b是用來作為參考座標的mc 而這個圖層第一與第二影格都是相同的。 Layer2(AS)的圖層的第一個影格,其as如下 duplicateMovieClip("a","a"+1,11); //複製影片a,命名為a1,深度為11 setProperty("a"+1,_y,600-n); //設定a1的y為600-n if(getProperty("a"+1,_y)<=-50){ //如果a1的y小於-50 removeMovieClip("a"+1); //a1被拿掉 } Layer2(AS)的圖層其第二個影格,其as如下 n=n+10; //變數控制而已 gotoAndPlay(1); //迴圈 Layer2(AS)的圖層,第一個影格中還放了一個隱藏按鈕,命名為hidenutton 其as如下 on (keyPress "<Up>") { //在按下up的時候 if(Math.abs(getProperty("a"+1,_y)-b._y)<=50){ //如果a1與b的y方向距離<=50 trace("yes"); //輸出"yes" }else { //否則 trace("no"); //輸出'no' } } 當然,你也可以只用一個影格來作這些東西,不過我個人是比較喜歡分開來作 因為有時候當影格as過多時,對於非專業的程式設計者來講是很痛苦的一件事情。 千萬不要笨笨的跟我上面的範例一樣ㄟ...要能自己更改變數或增加變數的應用 例如上述的n(箭頭上移速度),可以活用,例如不同的關卡有不同的速度之類的。 若要將聲音考慮進去,在聲音的控制方面,有一個可以取得聲音播放的位置 語法為snd.position 利用這個語法取得聲音位置,設定一變數跟其有關聯,而這變數就可以用來控制 任何你想要控制的(如箭頭的出現,或精采時候速度變快等等) 當然 這些東西不是一天兩天可以做出來的,要做到這樣的程度 必須要有一番功夫 以上 希望你看得懂...你應該自己會找到如何判斷'great""good"等ddr特效

推 61.225.76.80 12/12, , 1F
謝謝您>"<........
推 61.225.76.80 12/12, 1F
※ 編輯: harry901 來自: 218.167.250.224 (12/13 07:47)
文章代碼(AID): #_sSxR9K (Flash)
文章代碼(AID): #_sSxR9K (Flash)