Project1

标题: 如何在主選單背景中,做出可以旋轉的齒輪? (自備素材) [打印本页]

作者: 冰冷水藍    时间: 2018-11-13 17:36
标题: 如何在主選單背景中,做出可以旋轉的齒輪? (自備素材)
本帖最后由 冰冷水藍 于 2018-11-13 17:37 编辑

目前做了個齒輪的去背圖片
希望能放在主選單背景 (遊戲中叫出的選單畫面),並且能有旋轉的效果
某些商業遊戲能做出這樣的效果
希望能有解決方法,謝謝!!







作者: gforce    时间: 2018-11-13 17:36
初步可行,但遊戲只要經過F12重啟過後,再打開主選單就報錯

雖然具體出錯的原因沒找到, 不過應該是"alias"引起的
稍作修改
齒輪改為四個

  1. class Scene_Menu < Scene_Base #主選單
  2.    
  3.   def create_menu_background
  4.     @gear_sprite = Sprite.new
  5.     @gear_sprite.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  6.     @gear_sprite.ox = @gear_sprite.width/2  #圖片中心坐標
  7.     @gear_sprite.oy = @gear_sprite.height/2 #圖片中心坐標
  8.     @gear_sprite.z += 1 #圖片優先度
  9.     @gear_sprite.x = 544/2 #圖片位置x
  10.     @gear_sprite.y = 416/2 #圖片位置y
  11.     @gear_sprite.zoom_x = 0.5 #圖片縮放
  12.     @gear_sprite.zoom_y = 0.5 #圖片縮放
  13.    
  14.     @gear_sprite2 = Sprite.new
  15.     @gear_sprite2.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  16.     @gear_sprite2.ox = @gear_sprite.width/2  #圖片中心坐標
  17.     @gear_sprite2.oy = @gear_sprite.height/2 #圖片中心坐標
  18.     @gear_sprite2.z += 2 #圖片優先度
  19.     @gear_sprite2.x = 200#圖片位置x
  20.     @gear_sprite2.y = 200#圖片位置y
  21.     @gear_sprite2.zoom_x = 0.25 #圖片縮放
  22.     @gear_sprite2.zoom_y = 0.25 #圖片縮放
  23.    
  24.     @gear_sprite3 = Sprite.new
  25.     @gear_sprite3.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  26.     @gear_sprite3.ox = @gear_sprite.width/2  #圖片中心坐標
  27.     @gear_sprite3.oy = @gear_sprite.height/2 #圖片中心坐標
  28.     @gear_sprite3.z += 3 #圖片優先度
  29.     @gear_sprite3.x = 300#圖片位置x
  30.     @gear_sprite3.y = 300#圖片位置y
  31.     @gear_sprite3.zoom_x = 0.25 #圖片縮放
  32.     @gear_sprite3.zoom_y = 0.25 #圖片縮放
  33.    
  34.     @gear_sprite4 = Sprite.new
  35.     @gear_sprite4.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  36.     @gear_sprite4.ox = @gear_sprite.width/2  #圖片中心坐標
  37.     @gear_sprite4.oy = @gear_sprite.height/2 #圖片中心坐標
  38.     @gear_sprite4.z += 4 #圖片優先度
  39.     @gear_sprite4.x = 400#圖片位置x
  40.     @gear_sprite4.y = 150#圖片位置y
  41.     @gear_sprite4.zoom_x = 0.25 #圖片縮放
  42.     @gear_sprite4.zoom_y = 0.25 #圖片縮放
  43.    
  44.    
  45.     @menuback_sprite = Sprite.new
  46.     @menuback_sprite.bitmap = $game_temp.background_bitmap
  47.     @menuback_sprite.color.set(16, 16, 16, 128)
  48.     update_menu_background
  49.   end
  50.   #--------------------------------------------------------------------------
  51.   # * 清除圖片
  52.   #--------------------------------------------------------------------------
  53.   def dispose_menu_background
  54.     @gear_sprite.dispose
  55.     @gear_sprite2.dispose
  56.     @gear_sprite3.dispose
  57.     @gear_sprite4.dispose
  58.    
  59.     @menuback_sprite.dispose
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # * 圖片更新,旋轉
  63.   #--------------------------------------------------------------------------
  64.   def update_menu_background
  65.     @gear_sprite.angle += 1 #圖片旋轉速度
  66.     @gear_sprite2.angle -= 1
  67.     @gear_sprite3.angle += 2
  68.     @gear_sprite4.angle += 0.5
  69.   end
  70.   
  71. end
复制代码

作者: gforce    时间: 2018-11-13 21:35
試試這個
  1. class Scene_Menu < Scene_Base #主選單
  2.    
  3.   alias gear_create_menu_background create_menu_background  
  4.   def create_menu_background
  5.     @gear_sprite = Sprite.new
  6.     @gear_sprite.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  7.     @gear_sprite.ox = @gear_sprite.width/2  #圖片中心坐標
  8.     @gear_sprite.oy = @gear_sprite.height/2 #圖片中心坐標
  9.     @gear_sprite.z += 1 #圖片優先度
  10.     @gear_sprite.x = 544/2 #圖片位置x
  11.     @gear_sprite.y = 416/2 #圖片位置y
  12.     gear_create_menu_background
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # * 清除圖片
  16.   #--------------------------------------------------------------------------
  17.   alias gear_dispose_menu_background dispose_menu_background
  18.   def dispose_menu_background
  19.     @gear_sprite.dispose if @gear_sprite
  20.     gear_dispose_menu_background
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # * 圖片更新,旋轉
  24.   #--------------------------------------------------------------------------
  25.   def update_menu_background
  26.     @gear_sprite.angle += 1 #圖片旋轉速度
  27.   end
  28.   
  29. end
复制代码

作者: 冰冷水藍    时间: 2018-11-13 23:15
本帖最后由 冰冷水藍 于 2018-11-13 23:21 编辑
gforce 发表于 2018-11-13 21:35
試試這個


初步可行,但遊戲只要經過F12重啟過後,再打開主選單就報錯

腳本行數6至11行隨機出現
--------------------------------------------------------------------------------
SystemStackError occurred.
stack level too deep
--------------------------------------------------------------------------------

目標是同步顯示四個齒輪,獨立旋轉這樣



作者: 冰冷水藍    时间: 2018-11-18 01:37
gforce 发表于 2018-11-13 17:36
雖然具體出錯的原因沒找到, 不過應該是"alias"引起的
稍作修改
齒輪改為四個

不好意思,再請教您一下
目前腳本完美運行,但發現會讓我原有的這個滑動效果腳本失效
似乎是兩者都調用menu_background所致
有方法兼容嗎? 謝謝

  1. #==============================================================================
  2. # ** Menu Background 選單背景滑動
  3. #------------------------------------------------------------------------------
  4. #  This section changes the background for all menus.
  5. # V2 Fixed the battle problem. Also includes scrolling option.
  6. #==============================================================================
  7. module MENUBG
  8.   #If this is set to "false", the initial background will be used.
  9.   MENU_BG_ON = true
  10.   
  11. #~   MENU_BG = "MENUBG"  
  12.   MENU_BG = "P滑動背景"#"Graphics\Pictures"

  13.   #Changes the Transparency of the background. Set to 255 for full opacity.
  14.   MENU_BG_OPACITY = 255 #滑動背景的透明度
  15.   #This decides whether or not BG scrolling is active
  16.   MENU_BG_SCROLL = true #是否滾動

  17.   MENU_X = -2#滑動背景的滑動速度
  18.   MENU_Y = 0#垂直移動速度
  19. #~   MENU_Z = -5000
  20. end

  21. class Scene_Base
  22. include MENUBG
  23.   #--------------------------------------------------------------------------
  24.   # * Create Background for Menu Screen
  25.   #--------------------------------------------------------------------------
  26.   def create_menu_background
  27.     @menuback_sprite = Sprite.new
  28.     @menuback_sprite.bitmap = $game_temp.background_bitmap

  29.     @menuback_sprite.color.set(0, 0, 0, 0) #(16, 16, 16, 128)
  30.     if MENU_BG_ON
  31.     @menuback2 = Plane.new
  32.     @menuback2.bitmap = Cache.picture(MENU_BG)

  33.     @menuback2.color.set(0, 0, 0, 0) #(64, 64, 64, 0)
  34.     @menuback2.opacity = MENU_BG_OPACITY
  35.     end
  36.   end
  37.   def dispose_menu_background
  38.     if MENU_BG_ON
  39.       @menuback2.dispose
  40.     end
  41.     @menuback_sprite.dispose
  42.   end
  43.   
  44.   #--------------------------------------------------------------------------
  45.   # * Update Background for Menu Screen
  46.   #--------------------------------------------------------------------------
  47.   def update_menu_background
  48.     if MENU_BG_ON
  49.       if MENU_BG_SCROLL
  50.     @menuback2.ox -= MENU_X
  51.     @menuback2.oy -= MENU_Y
  52.         @menuback2.z = 0 #101
  53.       end
  54.     end
  55.   end
  56. end
复制代码

作者: gforce    时间: 2018-11-18 10:39
本帖最后由 gforce 于 2018-11-18 12:52 编辑
使用3楼的脚本在两处alias行末尾加上 unless $@

親測這方法有效
所以報錯是因為"alias"在每次F12後都會再運行


  1. class Scene_Menu < Scene_Base #主選單
  2.   
  3.   alias gear_create_menu_background create_menu_background unless $@
  4.   def create_menu_background
  5.     @gear_sprite = Sprite.new
  6.     @gear_sprite.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  7.     @gear_sprite.ox = @gear_sprite.width/2  #圖片中心坐標
  8.     @gear_sprite.oy = @gear_sprite.height/2 #圖片中心坐標
  9.     @gear_sprite.z += 1 #圖片優先度
  10.     @gear_sprite.x = 544/2 #圖片位置x
  11.     @gear_sprite.y = 416/2 #圖片位置y
  12.     @gear_sprite.zoom_x = 0.5 #圖片縮放
  13.     @gear_sprite.zoom_y = 0.5 #圖片縮放
  14.    
  15.     @gear_sprite2 = Sprite.new
  16.     @gear_sprite2.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  17.     @gear_sprite2.ox = @gear_sprite.width/2  #圖片中心坐標
  18.     @gear_sprite2.oy = @gear_sprite.height/2 #圖片中心坐標
  19.     @gear_sprite2.z += 2 #圖片優先度
  20.     @gear_sprite2.x = 200#圖片位置x
  21.     @gear_sprite2.y = 200#圖片位置y
  22.     @gear_sprite2.zoom_x = 0.25 #圖片縮放
  23.     @gear_sprite2.zoom_y = 0.25 #圖片縮放
  24.    
  25.     @gear_sprite3 = Sprite.new
  26.     @gear_sprite3.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  27.     @gear_sprite3.ox = @gear_sprite.width/2  #圖片中心坐標
  28.     @gear_sprite3.oy = @gear_sprite.height/2 #圖片中心坐標
  29.     @gear_sprite3.z += 3 #圖片優先度
  30.     @gear_sprite3.x = 300#圖片位置x
  31.     @gear_sprite3.y = 300#圖片位置y
  32.     @gear_sprite3.zoom_x = 0.25 #圖片縮放
  33.     @gear_sprite3.zoom_y = 0.25 #圖片縮放
  34.    
  35.     @gear_sprite4 = Sprite.new
  36.     @gear_sprite4.bitmap = Bitmap.new("Graphics/Pictures/0000.png")#圖片存取位置
  37.     @gear_sprite4.ox = @gear_sprite.width/2  #圖片中心坐標
  38.     @gear_sprite4.oy = @gear_sprite.height/2 #圖片中心坐標
  39.     @gear_sprite4.z += 4 #圖片優先度
  40.     @gear_sprite4.x = 400#圖片位置x
  41.     @gear_sprite4.y = 150#圖片位置y
  42.     @gear_sprite4.zoom_x = 0.25 #圖片縮放
  43.     @gear_sprite4.zoom_y = 0.25 #圖片縮放
  44.    
  45.     gear_create_menu_background
  46.   end
  47.   #--------------------------------------------------------------------------
  48.   # * 清除圖片
  49.   #--------------------------------------------------------------------------
  50.   alias gear_dispose_menu_background dispose_menu_background unless $@
  51.   def dispose_menu_background
  52.     @gear_sprite.dispose
  53.     @gear_sprite2.dispose
  54.     @gear_sprite3.dispose
  55.     @gear_sprite4.dispose
  56.    
  57.     gear_dispose_menu_background
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # * 圖片更新,旋轉
  61.   #--------------------------------------------------------------------------
  62.   alias gear_update_menu_background update_menu_background unless $@
  63.   def update_menu_background
  64.     @gear_sprite.angle += 1 #圖片旋轉速度
  65.     @gear_sprite2.angle -= 1
  66.     @gear_sprite3.angle += 2
  67.     @gear_sprite4.angle += 0.5
  68.     gear_update_menu_background
  69.   end
  70.   
  71. end
复制代码

這個放在滑動效果腳本以下




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1