iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
Mobile Development

用Flutter Flame做遊戲!Live!系列 第 15

回題!繼續畫圖!

  • 分享至 

  • xImage
  •  

差點忘了主題應該是「用向量繪圖做遊戲」,而不是「研究物理引擎」。
雖然要做遊戲,遊戲引擎的特性也是不得不接觸的東西,但還是回來著重在繪圖上吧!

今天要畫的東西比較急就章,重點在「使用同樣的框架」。


class RectPainter extends CustomPainter{

  double radius = 5;

  RectPainter(this.radius);

  Offset center = Offset(0,0);

  setRadius(double radius){
    this.radius = radius;
  }

  @override
  void paint(Canvas canvas, Size size) {
    // 計算正方形的邊長
    double side = radius * 1.414;

    // 創建一個Rect對象
    Rect rect = Rect.fromLTWH(-side/2, -side/2, side, side);

    // 繪製正方形
    canvas.drawRect(rect, Paint()..color = Colors.black);

  }

  @override
  bool shouldRepaint(RectPainter oldDelegate) {
    return true;
  }
}

然後再次修改/擴充「Ball」。


render(Canvas canvas) {
  super.render(canvas);

  if(paintType == 0)
    flowerPainter.paint(canvas, Size(radius*1.8, radius*1.8));
  else
    rectPainter.paint(canvas, Size(radius, radius));
}

https://ithelp.ithome.com.tw/upload/images/20240925/20130496kUUZksN1dS.png

這樣做的目的同時是要測試這套物理引擎的極限。
隨著繪圖種類的增加,是否會降低動畫的效率。
但現在還沒有達到「測試」的目的,畢竟只是增加一種,而且還不是很複雜的繪畫,嚴格講起來還變簡單了。

另外,如果可以,應該要使用同一套參數給「paint」函數,而不是其中一個要用「乘以1.8」這樣的處理。


上一篇
現實中,職場與專案進行時的兩難...
下一篇
多種碰撞條件設定...
系列文
用Flutter Flame做遊戲!Live!26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言