赞 | 1 |
VIP | 0 |
好人卡 | 1 |
积分 | 1 |
经验 | 5436 |
最后登录 | 2023-1-31 |
在线时间 | 585 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 68
- 在线时间
- 585 小时
- 注册时间
- 2013-5-25
- 帖子
- 1524
|
rgss本身没有定义这种方法、可以利用blt实现,不过不优化算法的话效率会异常地低下
既然你提出这个问题说明你对脚本是了解的,下面的代码稍微花了点时间写、你可以参考后自己整合成一个方法。- def y_get_circle_width(r,y) #根据相对圆心y坐标获得横向宽度
- return 0 if r.abs < y.abs
- return Math.sqrt(r ** 2 - (y.to_f) ** 2) * 2
- end
- bitmap1 = Bitmap.new("miu.jpg")
- bitmap2 = Bitmap.new(666,666)
- sprite = Sprite.new
- r = 64 #半径
- ox = 64 #位图上圆心坐标
- oy = 64
- sx = ox - r #获得左上顶点坐标
- sy = oy - r
- sprite.bitmap = bitmap2
- sprite.x = 320-64
- sprite.y = 240-64
- (r*2).times{|y|
- width = y_get_circle_width(r,y-r) #根据相对圆心y坐标获得横向宽度
- bx = sx + r - width / 2 #获得blt的起点坐标
- by = sy + y
- rect = Rect.new(bx,by,width,1)
- bitmap2.blt(bx,by,bitmap1,rect)
- }
- loop{Graphics.update}
复制代码 |
评分
-
查看全部评分
|