BMR's Radial Menus

Make games! Discuss those games here.

Moderators: Bob the Hamster, marionline, SDHawk

User avatar
BMR
Metal King Slime
Posts: 3310
Joined: Mon Feb 27, 2012 2:46 pm
Location: The Philippines
Contact:

BMR's Radial Menus

Post by BMR »

Posted this on the wiki, thought I'd throw it in here as well.

This script creates radial menus similar to those that are used in Secret of Mana (and the sequels). It can be used with the built-in menus, or with custom ones. An example of it in action is below:

Image

How to Use

The way this works is it grabs the images from a border sprite, then places them where appropriate. Before using this, you are going to need a few things, specifically:
  • A set of icons to use (box edge graphic)
  • A selection icon (small enemy graphic)
  • Menus to call (can use the built-in ones)
  • A declaration of the constants to be used
Below in the script, the section marked "Menu Constants" should ideally be placed alongside your other constants/globals declarations, if only to keep things nice and tidy. In this example script, I've used 8 different menu items, so I have 8 constants. You don't absolutely need to use constants like these, but it makes life much easier down the road. Take note, that these should be in the same order as they appear in your box edge sprite.

The constants that you'll need to change are menu:Selector, and icons:Menu. The first is the number of the small enemy sprite where your cursor is. The second, icons:Menu, is the number of the box edge sprite where you've got your icons.

You'll also need to run the environment initialize script. This is separate from the radial menu script, as sl:UI Container is used by my other scripts as well, such as the dialogue menu.

Once you've got that, you can start editing the script. Probably the most important part that you'll edit is in the Variable Declaration section. Specifically, the value mNum. This specifies exactly how many menu items you've got. In the example script, it's set to 8. You can change the radius of the circle as well, but I've found that the current value of 4 suits me well enough.

Other than that, there's only one more thing you really need to tinker with, and that's the section marked Menu Selection. That section contains a Switch command, which will choose what to do based on which is the currently selected menu item. In the example, I've left some blank, as they will be used for custom functions later on (and are not relevant to the example). For things like inventory or spells, you can use the built-in functions, as I've done in the example.

And that's about it, you've got your radial menu up and running. At the end of the page, I've also included a sample menu selector and a set of icons that you can use for your menu. The icons are relatively general-purpose, so you can mix and match as you see fit. Note that they both share the same palette. While you don't have to do this, I find that it makes editing much simpler. For the selector, it's possible to go ahead and import it into Custom right away, but for the icons, you'll need to open up an image-editor and move around which icons you want to use.

One important thing to note though, is that this doesn't include any sounds for when you rotate the menu. That's something I plan to add later on once I start working on the sound/music for my game, but in this script it's fairly easy to add in at any point.

Code: Select all

#BMR's Radial Menus
# Version 1.0 - 20170527
# by BMR
#
# Feel free to use this anywhere, no credit is needed.
#


#Globals
#===============================
global variable, begin
  200, sl:UI Container
end
#===============================

#Menu Constants
#===============================
define constant, begin
  1, menu:Inventory
  2, menu:Status
  3, menu:Equip
  4, menu:Skills
  5, menu:Journal
  6, menu:Dialogue
  7, menu:SaveLoad
  8, menu:Options
  
  9, icons:Menu

  1, menu:Selector
end
#===============================



#Environment Initializer (This needs to be called somewhere)
#=======================================
script, environment initialize, begin
  #Create and place the overall UI slice container
  #------------------------------------------------------------------------------------
  sl:UI Container := create container(cntX, cntY)
  put slice screen(sl:UI Container, 0, 0)
  set parent(sl:UI Container, lookup slice(sl:map layer7))
  move slice above(sl:UI Container, lookup slice(sl:map layer7))
  #------------------------------------------------------------------------------------
end
#=======================================





#================================================================================================================================================================
#==============================================================This creates a SoM-style radial menu==============================================================
#================================================================================================================================================================
plotscript, radial menu, begin

  #Declare the variables
  #---------------------
  variable(
    mCnt #Menu Overall Container
    mNum #Number of menu items
    mRad #Radial Menu radius in pixels
    mItm #Menu Item
    mSel #Menu Selector
    mMve #Whether to rotate the menu
    MDir #Menu Direction, 0 is None, -1 is Left, 1 is Right
    
    sCur #Currently Selected
    
    aInt #Angle Interval
    aCur #Current Angle
    
    cPos #Current Position
    cSel #Currently Selected
    
    bseX #Base X
    bseY #Base Y
    
    tarX #Target X
    tarY #Target Y
    
    curX #Current X
    curY #Current Y
    
    ctr  #A Counter
    
    actv #Whether Active
  )
  #---------------------
  
  
  #Generate the Variables
  #----------------------
  mNum := 8 #This is the number of menu items
  mRad := 4 #This is the radius of the circle
  
  bseX := hero pixel x + 8   #\Set where the center of
  bseY := hero pixel y -- 10 #/the radial menu will be
  
  aInt := 360 / mNum #Set the angle interval by dividing 360 by the number of items
  aCur := 0          #The first angle will always be 0, e.g. the item directly to the right of the screen
  
  mCnt := create container #Creates a container, makes freeing stuff up later easier
  
  actv := TRUE  #The radial menu starts out Active
  mMve := FALSE #Whether the menu moved or not, starts out False
  mDir := 0     #Starting direction of the menu, right now it's null
  
  sCur := 1 #Currently, the selected item is 1, or menu:Inventory by default
  #----------------------
  
  suspend player #\This will suspend the player and the npcs
  suspend npcs   #/from moving, just to keep things neat
  
  
  #----------------------------------
  set horiz anchor(mCnt, edge:center) # \
  put slice screen(mCnt, 0, 0)        #  \ This block will take the container slice
  set parent(mCnt, sl:UI Container)   #  / and set it to the appropriate location
  put slice (mCnt, bseX, bseY)        # /
  #----------------------------------
  
  #-------------------------------------------------------------------------------------
  #Create the items
  #-------------------------------------------------------------------------------------
  for(ctr, 1, mNum) do(
  
    #-------------------------------------
    mItm := load border sprite(icons:Menu) # \
    set sprite frame(mItm, ctr)            # |
    set horiz anchor(mItm, edge:center)    #  \ This block creates each menu item and
    set vert anchor(mItm, edge:center)     #  / then sets it to be a child of mCnt
                                           # |
    set parent(mItm, mCnt)                 # /
    #-------------------------------------
    
    tarX := ((bseX * 10000) + (mRad * 10000) * cosine(aCur)) / 10000000 # \Yeah, honestly I had no idea what I was doing here,
    tarY := ((bseY * 10000) + (mRad * 10000) * sine(aCur)) / 10000000   # /and I just kept plugging numbers until it worked.


    move slice to(mItm, tarX, tarY, 6) #Move the slice.  No, the menu items don't actually move in curves, they move in straight lines.  Looks good enough though.


    #-----------------------------
    set slice extra(mItm, 0, aCur) # \ This block saves the angle of the menu item in the slice's extra
    aCur += aInt                   # / data.  It also increments the angle for the next item.
    #-----------------------------
  )
  #-------------------------------------------------------------------------------------
  #-------------------------------------------------------------------------------------



  #--------------------------------------------------------
  #Create the selector
  #--------------------------------------------------------
  
  #----------------------------------
  mSel := load small enemy sprite(menu:Selector)  # \
  set horiz anchor(mSel, edge:center) # |
  set vert anchor(mSel, edge:center)  #  > This block creates the selector and puts it in hte proper place
                                      # |
  set parent(mSel, mCnt)              # /
  #----------------------------------
  
  tarX := ((bseX * 10000) + (mRad * 10000) * cosine(aCur)) / 10000000 # \ Yeah, same
  tarY := ((bseY * 10000) + (mRad * 10000) * sine(aCur)) / 10000000   # / as above
  
  move slice to(mSel, tarX, tarY, 6)
  #--------------------------------------------------------
  #--------------------------------------------------------
  
  
  

#-----------------------------------------------------------------------------------------------------------------------------
#This governs the movement (rotation) of the menu
#-----------------------------------------------------------------------------------------------------------------------------
  while(actv == TRUE) do(
    
    wait for key #Sets a wait, that way keypresses aren't duplicated
    
    #Set data for rotating counter clock-wise
    #---------------------------------------------------------------
    if(key is pressed(key:left) || key is pressed(key:up)) then(
      mMve := TRUE
      mDir := -1
      
      sCur += 1
      if(sCur >> mNum) then(sCur := 1)
    )
    #---------------------------------------------------------------
    
    
    
    #Set data for rotating clock-wise
    #---------------------------------------------------------------
    if(key is pressed(key:right) || key is pressed(key:down)) then(
      mMve := TRUE
      mDir := 1
      
      sCur -= 1
      if&#40;sCur <= 0&#41; then&#40;sCur &#58;= mNum&#41;
    &#41;
    #---------------------------------------------------------------
    
    
    #Exit the menu
    #---------------------------------------------------------------
    if&#40;key is pressed&#40;key&#58;ESC&#41;&#41; then&#40;
      #---------------------------------
      #Move the menu items off screen
      #---------------------------------
      mItm &#58;= first child&#40;mCnt&#41;
      
      while&#40;mItm&#41; do&#40;
        move slice to&#40;mItm, 0, 0, 3&#41;
        mItm &#58;= next sibling&#40;mItm&#41;
      &#41;
      #---------------------------------
      #---------------------------------
      
      wait&#40;3&#41;
      
      free slice&#40;mCnt&#41;
      break
    &#41;
    #---------------------------------------------------------------
    
    
    #---------------------------------------------------------------
    #MENU SELECTION
    #  Note, constants are defined in a different file.
    #---------------------------------------------------------------
    if&#40;key is pressed&#40;key&#58;ENTER&#41;&#41; then&#40;
      switch&#40;sCur&#41; do&#40;
        case&#40;menu&#58;Inventory&#41; do&#40;items menu&#41;
        case&#40;menu&#58;Status&#41;    do&#40;status screen&#41;
        case&#40;menu&#58;Equip&#41;     do&#40;equip menu&#41;
        case&#40;menu&#58;Skills&#41;    do&#40;spells menu&#41;
        case&#40;menu&#58;Journal&#41;   do&#40;&#41;
        case&#40;menu&#58;Dialogue&#41;  do&#40;&#41;
        case&#40;menu&#58;SaveLoad&#41;  do&#40;&#41;
        case&#40;menu&#58;Options&#41;   do&#40;main menu&#41;
      &#41;
    &#41;
    #---------------------------------------------------------------
    #---------------------------------------------------------------
    
    
  #----------------------------------------------------------------------------------------
  #This section will rotate the menu
  #----------------------------------------------------------------------------------------
    if&#40;mMve == TRUE&#41; then&#40;
      mItm &#58;= first child&#40;mCnt&#41;
      
      #---------------------------------
      #This does the actual rotating
      #---------------------------------
      while&#40;mItm&#41; do&#40;
        
        if&#40;mItm <> last child&#40;mCnt&#41;&#41; then&#40; #This block only continues up to the second to last child, that's because the last child is the selector
        
          aCur &#58;= get slice extra&#40;mItm, 0&#41; #Retrieve the item's current angle
          
          aCur += aInt * mDir #Depending on whether rotating left or right, either add or subtract the angle interval
          
          tarX &#58;= &#40;&#40;bseX * 10000&#41; + &#40;mRad * 10000&#41; * cosine&#40;aCur&#41;&#41; / 10000000 # \ More math.
          tarY &#58;= &#40;&#40;bseY * 10000&#41; + &#40;mRad * 10000&#41; * sine&#40;aCur&#41;&#41; / 10000000   # / Ugh.

          move slice to&#40;mItm, tarX, tarY, 4&#41;
          
          if&#40;aCur >> 360&#41; then&#40;aCur &#58;= aCur -- 360&#41; # \ This keeps the angle between
          if&#40;aCur << 0&#41; then&#40;aCur &#58;= aCur + 360&#41;    # / 0 and 360, keeps things tidy
        
          set slice extra&#40;mItm, 0, aCur&#41; #Store the new angle in the extra data
          
          mItm &#58;= next sibling&#40;mItm&#41; #Gets the next sibling
        &#41;
        else&#40;
          break
        &#41;
      &#41;
      #---------------------------------
      #---------------------------------
      
        
      aCur &#58;= 0     #\
      mDir &#58;= 0     # >Reset the values
      mMve &#58;= FALSE #/
    &#41;
  #----------------------------------------------------------------------------------------
  #----------------------------------------------------------------------------------------
  
  &#41;
#-----------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------

  resume player # \ Resumes
  resume npcs   # / movement
  
  
end
#================================================================================================================================================================
#================================================================================================================================================================
Sample Graphics

Image

Image
Last edited by BMR on Mon May 29, 2017 1:06 am, edited 5 times in total.
Being from the third world, I reserve the right to speak in the third person.

Using Editor version wip 20170527 gfx_sdl+fb music_sdl
User avatar
sheamkennedy
Liquid Metal Slime
Posts: 1110
Joined: Mon Sep 16, 2013 9:29 pm
Location: Tama-shi, Tokyo, Japan
Contact:

Post by sheamkennedy »

EDIT: Never mind, just noticed the 3rd party HSI was needed...

I haven't been able to implement this script due to cosine and sine not being recognized as functions. Are these something I have to import or are they in a more current nightly than I have?

The error I'm getting says "unrecognized name cosine not defined in script.
Last edited by sheamkennedy on Sun May 28, 2017 12:21 am, edited 1 time in total.
⊕ P E R S O N A L M U S I C: https://open.spotify.com/album/6fEo3fCm5C3XhtFRflfANr
� C O L L A B M U S I C: https://dustpuppets.bandcamp.com/releases
User avatar
BMR
Metal King Slime
Posts: 3310
Joined: Mon Feb 27, 2012 2:46 pm
Location: The Philippines
Contact:

Post by BMR »

sheamkennedy wrote:EDIT: Never mind, just noticed the 3rd party HSI was needed...

I haven't been able to implement this script due to cosine and sine not being recognized as functions. Are these something I have to import or are they in a more current nightly than I have?

The error I'm getting says "unrecognized name cosine not defined in script.
Ah, I forgot to include that here, I have it on the wiki, but must've forgotten to copy-paste it here. My bad.
Being from the third world, I reserve the right to speak in the third person.

Using Editor version wip 20170527 gfx_sdl+fb music_sdl
User avatar
sheamkennedy
Liquid Metal Slime
Posts: 1110
Joined: Mon Sep 16, 2013 9:29 pm
Location: Tama-shi, Tokyo, Japan
Contact:

Post by sheamkennedy »

BMR wrote:
sheamkennedy wrote:EDIT: Never mind, just noticed the 3rd party HSI was needed...

I haven't been able to implement this script due to cosine and sine not being recognized as functions. Are these something I have to import or are they in a more current nightly than I have?

The error I'm getting says "unrecognized name cosine not defined in script.
Ah, I forgot to include that here, I have it on the wiki, but must've forgotten to copy-paste it here. My bad.
Also just noticing now that "sl:UI Container" is not found. Is this something from the latest nightly or do I have to define it somewhere else. I tried just parenting the slices to my hero but nothing seems to be happening in terms of visuals.
⊕ P E R S O N A L M U S I C: https://open.spotify.com/album/6fEo3fCm5C3XhtFRflfANr
� C O L L A B M U S I C: https://dustpuppets.bandcamp.com/releases
User avatar
BMR
Metal King Slime
Posts: 3310
Joined: Mon Feb 27, 2012 2:46 pm
Location: The Philippines
Contact:

Post by BMR »

Oops! Yeah, that's a global that's initialized elsewhere, seems I overlooked that. Fixing it now.
Being from the third world, I reserve the right to speak in the third person.

Using Editor version wip 20170527 gfx_sdl+fb music_sdl
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Post by TMC »

Cool! Thanks for posting this.

I notice some problems with the script:

You assume that the map has 8 layers. If it doesn't, then maplayer7 and hence sl:UI Container is hidden, plus sl:UI Container will get deleted if the "Recreate map layers when changing maps". I think it's generally better to keep the sl:UI Container on scriptlayer.

The following lines:

Code: Select all

    tarX &#58;= &#40;&#40;bseX * 10000&#41; + &#40;mRad * 10000&#41; * cosine&#40;aCur&#41;&#41; / 10000000 # \Yeah, honestly I had no idea what I was doing here,
    tarY &#58;= &#40;&#40;bseY * 10000&#41; + &#40;mRad * 10000&#41; * sine&#40;aCur&#41;&#41; / 10000000   # /and I just kept plugging numbers until it worked. 
are rather close to overflowing. They'll do so if mRad is more than 21. However, mRad is measured in tens of pixels instead of pixels for some reason. Also, bseX and bseY do nothing here, they're too tiny. You handle them elsewhere (put slice (mCnt, bseX, bseY)). Instead, write:

Code: Select all

  mRad &#58;= 40 #This is the radius of the circle 
...
    tarX &#58;= cosine&#40;aCur, mRad&#41;
    tarY &#58;= sine&#40;aCur, mRad&#41; 
There's also a rounding error that could result in the menu items not being spaced evenly. I suggest getting rid of mInt, and instead doing:

Code: Select all

aCur &#58;= &#40;ctr -- 1&#41; * 360 / mNum
Inside the for loop.

I thought that the items moving in a short of star shape was intentional, but now I see it's due to using movesliceto instead of manually moving them in a circle. It'll be more pronounced the fewer menu items there are.

The number of comment lines seems... a bit excessive.
Last edited by TMC on Mon May 29, 2017 1:40 am, edited 1 time in total.
User avatar
BMR
Metal King Slime
Posts: 3310
Joined: Mon Feb 27, 2012 2:46 pm
Location: The Philippines
Contact:

Post by BMR »

TMC wrote:Cool! Thanks for posting this.

I notice some problems with the script:

You assume that the map has 8 layers. If it doesn't, then maplayer7 and hence sl:UI Container is hidden, plus sl:UI Container will get deleted if the "Recreate map layers when changing maps". I think it's generally better to keep the sl:UI Container on scriptlayer.

The following lines:

Code: Select all

    tarX &#58;= &#40;&#40;bseX * 10000&#41; + &#40;mRad * 10000&#41; * cosine&#40;aCur&#41;&#41; / 10000000 # \Yeah, honestly I had no idea what I was doing here,
    tarY &#58;= &#40;&#40;bseY * 10000&#41; + &#40;mRad * 10000&#41; * sine&#40;aCur&#41;&#41; / 10000000   # /and I just kept plugging numbers until it worked. 
are rather close to overflowing. They'll do so if mRad is more than 21. However, mRad is measured in tens of pixels instead of pixels for some reason. Also, bseX and bseY do nothing here, they're too tiny. You handle them elsewhere (put slice (mCnt, bseX, bseY)). Instead, write:

Code: Select all

  mRad &#58;= 40 #This is the radius of the circle 
...
    tarX &#58;= cosine&#40;aCur, mRad&#41;
    tarY &#58;= sine&#40;aCur, mRad&#41; 
There's also a rounding error that could result in the menu items not being spaced evenly. I suggest getting rid of mInt, and instead doing:

Code: Select all

aCur &#58;= &#40;ctr -- 1&#41; * 360 / mNum
Inside the for loop.

I thought that the items moving in a short of star shape was intentional, but now I see it's due to using movesliceto instead of manually moving them in a circle. It'll be more pronounced the fewer menu items there are.

The number of comment lines seems... a bit excessive.

Ah, righto, I'll fix those up then, thanks :) And yeah, they don't really move in a circle, as it seemed a bit too complicated for my math-deficient brain to figure out.

And yeah, lots and lots and lots of comment lines. I'm rather disorganized, so I try to overdo the comments on my scripts, so that I know just what the crap it was that I was trying to accomplish if I have to come back to the script a few months (or even years!) down the line.
Being from the third world, I reserve the right to speak in the third person.

Using Editor version wip 20170527 gfx_sdl+fb music_sdl
User avatar
sheamkennedy
Liquid Metal Slime
Posts: 1110
Joined: Mon Sep 16, 2013 9:29 pm
Location: Tama-shi, Tokyo, Japan
Contact:

Post by sheamkennedy »

Let me know once this is updated. I really want to get this working, it's so cool!
⊕ P E R S O N A L M U S I C: https://open.spotify.com/album/6fEo3fCm5C3XhtFRflfANr
� C O L L A B M U S I C: https://dustpuppets.bandcamp.com/releases
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Post by TMC »

It should work already, none of my changes are necessary.

Having lots of comments is great, I was referring to all the blank lines and padding. But that's personally taste: all else being equal, I think short code is a lot more readable. (Blank lines are useful for organisation, though)
Last edited by TMC on Mon May 29, 2017 3:53 am, edited 1 time in total.
User avatar
BMR
Metal King Slime
Posts: 3310
Joined: Mon Feb 27, 2012 2:46 pm
Location: The Philippines
Contact:

Post by BMR »

Ah yeah, the blank lines and stuff. Yeah, that's for keeping me organized. I'm terribly messy, and if I didn't do that, all of it would pretty much immediately devolve into a convoluted, completely incomprehensible mess =p I learned that the hard way, when I went back to look at Legacy's combat engine, heh.
Being from the third world, I reserve the right to speak in the third person.

Using Editor version wip 20170527 gfx_sdl+fb music_sdl
User avatar
sheamkennedy
Liquid Metal Slime
Posts: 1110
Joined: Mon Sep 16, 2013 9:29 pm
Location: Tama-shi, Tokyo, Japan
Contact:

Post by sheamkennedy »

EDIT #3:
I think I got it working. My tag check idea seems to have worked. I don't think this was anything wrong with your code, it's just a consequence of the way I implemented your code and the way other codes in my game are set up.

Now all that remains is making each icon selection lead to an appropriate menu item! I'll let you know if I have any more questions.


EDIT #2:
I've made a bit more progress. I realized that everything was being applied to map layer #7 and that layer did not exist on my map. So I added that and am now my icons and selector on screen around my hero.

The issue now is that the way I am calling the radial menu script in my on-keypress is somehow causing the script to trigger multiple times. This is creating more than one instance of the radial menu. I'm not sure how to overcome this. I'm going to play around with some tag stuff to see if I can prevent multiple instances with a tag or something. I think the issue is caused by the radial menu script checking keypress and my on-keypress also checking the same key thus resulting in conflicting scripts.


EDIT:
So I've cleared up some of my problem. I have switched radial menu from a plotscript to a script. This allows me to call it on-keypress. I am using a "script-instead-of-menu keypress," thus the default menu does not pop up and the radial menu is instead called.

My remaining issue is that even though the radial menu is working (I know this because I can access the menu items) there is no visual indication of it (the icons are not appearing on screen). I think this has to do with me replacing the variables cntX and cntY with values of "10" in order to compile the script.

As far as I can tell I have done everything else properly. I have set these constants as follows:
1, icons:Menu
0, menu:Selector
Which I understand to mean use box graphics set #1 for the menu icons and use small enemy sprite #0 for the selector.

Let me know if I'm going about any of this wrong...


Hey I PM'd you about this but just remembered that this thread existed for radial menus.

Regarding your radial menu script I am still having some issues that need clarifying.

The variables: cntX and cntY are not defined in the code provided. I assume these represent something like the centre of the hero as a reference point so that the menu position is based on hero position?

Also I'm not clear on where to call the radial menu plotscript and the initialize environment script. At this point in time I have called the initialize environment script at the beginning of my map autorun which I believe is sufficient. How is the radial menu called though? Is there are certain place in the engine to call this?

Thank you for your help.
Last edited by sheamkennedy on Sun Jun 11, 2017 4:15 am, edited 3 times in total.
⊕ P E R S O N A L M U S I C: https://open.spotify.com/album/6fEo3fCm5C3XhtFRflfANr
� C O L L A B M U S I C: https://dustpuppets.bandcamp.com/releases
TMC
Metal King Slime
Posts: 4308
Joined: Sun Apr 10, 2011 9:19 am

Post by TMC »

What problem did you have with assigning the menu script to the menu-action plotscript? That should have worked, but maybe you didn't notice because you didn't fix the maplayer 7 problem until afterwards.
User avatar
sheamkennedy
Liquid Metal Slime
Posts: 1110
Joined: Mon Sep 16, 2013 9:29 pm
Location: Tama-shi, Tokyo, Japan
Contact:

Post by sheamkennedy »

TMC wrote:What problem did you have with assigning the menu script to the menu-action plotscript? That should have worked, but maybe you didn't notice because you didn't fix the maplayer 7 problem until afterwards.
Yeah the issue was the map layer 7 not being active. I just suspected it was an issue involving how the menu was assigned but I was mistaken.
⊕ P E R S O N A L M U S I C: https://open.spotify.com/album/6fEo3fCm5C3XhtFRflfANr
� C O L L A B M U S I C: https://dustpuppets.bandcamp.com/releases
User avatar
sheamkennedy
Liquid Metal Slime
Posts: 1110
Joined: Mon Sep 16, 2013 9:29 pm
Location: Tama-shi, Tokyo, Japan
Contact:

Post by sheamkennedy »

I came up with a short video clip showing how I integrated the radial menu in to my current project.
Here's the video link:
https://youtu.be/tWQBLI5i1p4?list=PL5Fa ... fBF3L4dox2

I ended up making the selection cursor in to more of an overlay type thing. I also reduced the amount of menu items for the time being since I don't think I'll require as many for my game. I'm really happy with how this turned out. Thank you so much for taking the time to get this code working and for sharing with everyone. I can even see this code being a useful reference for performing other slice animations in my game.
⊕ P E R S O N A L M U S I C: https://open.spotify.com/album/6fEo3fCm5C3XhtFRflfANr
� C O L L A B M U S I C: https://dustpuppets.bandcamp.com/releases
User avatar
TheLordThyGod
Slime Knight
Posts: 218
Joined: Thu May 14, 2015 9:18 pm
Location: Muscle Shoals, AL, USA, Earth, Solar System, Milky Way, Known Universe
Contact:

Post by TheLordThyGod »

This is so awesome. I'm going to have to delve into scripting soon.
...spake The Lord Thy God.
Post Reply