Android游戏开发之切换游戏场景特效的实现

Linux大全评论195 views阅读模式

大家在玩游戏的时候应该有时候会发现在切换游戏场景的时候 界面会播放一段非常好看的动画 比如一个百叶窗的形式关闭界面 然后在打开界面 效果非常好看 用户体验也非常好,今天我向大家解读游戏开发中常用的四种切换场景的特效动画。

下面游戏界面中 红框内标识了4个图片按钮 分别点击这4个按钮会分别播放4组切换场景的特效动画。


1.交叉相合动画

如图所示 左右两边分别以若干个矩形以交替相合的形式合并 控制屏幕关闭

Android游戏开发之切换游戏场景特效的实现

通过两个for循环 1 3 5 7 9 绘制屏幕左方矩形 2 4 6 8 10 绘制屏幕右放矩形 在游戏更新中计算矩形移动的坐标  然后左边的矩形 分别向右延伸 右边的矩形分别向左延伸  这样就可以实现矩形的交叉合并动画。  

  1.               /**交错的实现矩形相交**/  
  2. int count = (mScreenHeight / RANDOM_TYPE_2_RANGE);  
  3. for (int i = 0; i < count; i += 2){  
  4.                   drawFillRect(mCanvas, Color.BLACK, 0, i * RANDOM_TYPE_2_RANGE, s_effRange, RANDOM_TYPE_2_RANGE);  
  5.               }  
  6.               for (int i = 1; i < count; i += 2){  
  7.                   drawFillRect(mCanvas, Color.BLACK, mScreenWidth - s_effRange, i * RANDOM_TYPE_2_RANGE, s_effRange, RANDOM_TYPE_2_RANGE);  
  8.               }  
  1. /** 
  2.  * 绘制一个矩形 
  3.  * @param canvas 
  4.  * @param color 
  5.  * @param x 
  6.  * @param y 
  7.  * @param w 
  8.  * @param h 
  9.  */  
  10. public void drawFillRect(Canvas canvas, int color, int x, int y, int w, int h) {  
  11.     int backColor = mPaint.getColor();  
  12.     mPaint.setColor(color);  
  13.     canvas.drawRect(x, y, x + w, y + h, mPaint);  
  14.     mPaint.setColor(backColor);  
  15. }  

2.扇形合并动画

如图所示以扇形的转圈的形式来控制屏幕关闭

Android游戏开发之切换游戏场景特效的实现

在游戏更新中一直更新扇形绘制的区域 根据绘制区域的参数将扇形绘制出来 实现扇形合并的动画效果。

  1. //rectf为扇形绘制区域 为了让扇形完全填充屏幕所以将它的区域扩大了100像素   
  2. RectF rectf = new RectF(- RANDOM_TYPE_3_RANGE, - RANDOM_TYPE_3_RANGE,mScreenWidth+RANDOM_TYPE_3_RANGE,mScreenHeight + RANDOM_TYPE_3_RANGE);  
  3. //将扇形绘制出来   
  4. drawFillCircle(mCanvas, Color.BLACK,rectf,0,s_effRange,true);  

绘制扇形的方法
 

  1. /** 
  2.  * 绘制一个扇形 
  3.  * @param canvas 
  4.  * @param color 
  5.  * @param oval 
  6.  * @param startAngle 
  7.  * @param sweepAngle 
  8.  * @param useCenter 
  9.  */  
  10. public void drawFillCircle(Canvas canvas, int color, RectF oval, int startAngle, int sweepAngle, boolean useCenter) {  
  11.     int backColor = mPaint.getColor();  
  12.     mPaint.setColor(color);    
  13.     canvas.drawArc(oval, startAngle, sweepAngle, useCenter, mPaint);  
  14.     mPaint.setColor(backColor);  
  15. }  

企鹅博客
  • 本文由 发表于 2019年9月17日 02:53:00
  • 转载请务必保留本文链接:https://www.qieseo.com/170695.html

发表评论