遊戲震屏效果的實現

2021-08-31 08:06:01 字數 1856 閱讀 8470

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

震屏效果在遊戲裡使用相當廣泛的,特別在被物體撞擊的時候,震屏效果能大大提高遊戲的真實感。我開始以為實現震屏效果很簡單,通過正弦函式去設定場景位置偏移量即可,但真正去做時發現還是有一點點挑戰。

1.通過正弦函式去設定場景位置偏移量,只能實現單獨的上下/左右/斜線震動,怎麼也無法實現其它遊戲裡那種效果。仔細分析之後才知道,垂直和水平方向分別分別用正弦函式和余弦函式計算偏移量。

var xo = ax * math.cos(angle);    var yo = ay * math.sin(angle);
2.提供各種定製引數,以滿足不同情況的需要。比如振幅的變化(減弱/增強/增強再減弱),振動的次數和持續的時間等等。

uishaker.prototype.setamplitudex = function

(value) uishaker.prototype.setamplitudey = function

(value) uishaker.prototype.setduration = function

(value) uishaker.prototype.settimes = function

(value) uishaker.prototype.setamplitudemodifier = function

(value)

3.我希望可以讓任何乙個控制項都可以支援震動效果,而不光是整個場景才能震動,同時又不想修改基類uielement。當然裝飾模式是比較好的選擇,不過在js不需要那麼麻煩。uishaker去過載它所在容器的paintself函式就行了,uishaker放到任何乙個控制項裡面,啟用uishaker時就會讓這個控制項震動,震動完成後自動恢復原狀。

uishaker.prototype.setenable = function

(enable)     if(!enable)     var me = this;    var ax = this.amplitudex ? this.amplitudex : 0;    var ay = this.amplitudey ? this.amplitudey : 0;    var n = this.times ? this.times : 1;    var duration = this.duration ? this.duration : 200;    var starttime = date.now();    var oldpaintself = parent.paintself;    var range = n * 2 * math.pi;    var am = this.amplitudemodifier;    parent.paintself = function

(canvas)             else

if(am === "d")             else

if(am === "i->d")             xo *= factor;            yo *= factor;            canvas.translate(xo, yo);        }        else         oldpaintself.call(parent, canvas);    }    return

this;}

在tangide裡使用震屏控制項非常方便,拖動乙個震屏控制項到場景中,在特定事件發生時啟用它即可,整個過程不需要寫一行**。

給我老師的人工智慧教程打call!

jquery實現整屏翻屏效果

實現整屏上下翻效果 靜態html 注意頭部載入的js,jquery庫,mousewheel.js已經實現的index.js jquery 如下 index.js var i 0 翻屏變數,初始第一屏 var s 0 該變數作用是滑鼠滑輪一直向下或者向上滑動時出現抖動現象 function else ...

jquery實現整屏翻屏效果

實現整屏上下翻效果 靜態html 注意頭部載入的js,jquery庫,mousewheel.js已經實現的index.js jquery 如下 index.js var i 0 翻屏變數,初始第一屏 var s 0 該變數作用是滑鼠滑輪一直向下或者向上滑動時出現抖動現象 function else ...

wince滑屏效果的實現

覺得寫的淺顯易懂,有必要嘗試一下。原理比較簡單,中途又得到了n俠的指點,很快完成了該效果的測試。下面記錄一下步驟。整屏滑動需要兩張,一張滑出,一張滑入。所採用的wince裝置的解析度為800 480,首先建立乙個緩衝dc,大小為1600 480,然後將兩幅位圖一左一右緊挨著繪製到該緩衝dc中。如下 ...