Loading...
114
Game
Hayami-Chan 3D
2 years ago

Working on the hunting AI. I'm using the nodes in the apartment and chances to let #Hayamichan choose a new destination...

Useful c# script is in the article!

#MadeWithUnity #GameDev


With this script you can draw an index based on chances. It's really useful!

PropabilityPool.cs

		
			using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace DonutStudio.Utilities.Propability
{
    /// <summary>
    /// Class to draw a random element from a pool of rates.
    /// </summary>
    public class PropabilityPool
    {
        float[] rates;
        float total;

        /// <summary>
        /// Create an object of the PropabilityPool class with the rates.
        /// </summary>
        /// <param name="_rates">The rates of the single elements.</param>
        public PropabilityPool(float[] _rates)
        {
            rates = _rates;

            UpdateTotal();
        }

        /// <summary>
        /// Draw a random element for a pool of rates. The higher the rate the higher the chance.
        /// </summary>
        /// <returns></returns>
        public int DrawElement()
        {
            float r = Random.Range(0f, total);
            float accumulatedProbability = 0f;

            for (int i = 0; i < rates.Length; i++)
            {
                accumulatedProbability += rates[i];
                if (r <= accumulatedProbability)
                    return i;
            }
            return 0;
        }

        /// <summary>
        /// Change the value of a rate.
        /// </summary>
        /// <param name="index">The index of the rate.</param>
        /// <param name="newRate">The new value of the rate.</param>
        public void ChangeRate(int index, float newRate)
        {
            if (index < 0 && index < rates.Length)
                return;
            rates[index] = newRate;
            UpdateTotal();
        }
        /// <summary>
        /// Change all the rates.
        /// </summary>
        /// <param name="newRates">The rates.</param>
        public void ChangeRates(float[] newRates)
        {
            rates = newRates;
            UpdateTotal();
        }
    
        /// <summary>
        /// Update the total value of all rates
        /// </summary>
        void UpdateTotal()
        {
            total = 0;
            foreach (float f in rates)
                total += f;
        }
    }
}
		
	


8 comments

Loading...

Next up

Working hard on the game, so you can play it (hopefully this month).

I think it might not be that scary, but good enough for my first #Horror game

#MadeWithUnity #GameDev #Hayamichan

Say no more!

I've finally added mobile controls. It took a ton of work to redo the input system, but now I can just export the game for android and everything should work

Can you guess what this could be?

We've updated the trending section of the Game Jolt Shop! http://gamejolt.com/#shop

Snag a new avatar frame and a sticker pack or two!

Remember, every purchase supports our creators and our community!

Support creators, shop on Game Jolt! #broadcast

The animations are working!

#MadeWithUnity #GameDev #Hayamichan

We have a question and we wanna know: What's the coolest easter egg you've ever seen in a game? Complete the quest and you'll get 100 Coins!

The hide and seek event seems to work fine. Now I have to implement the hunt event when #Hayamichan sees you...

#MadeWithUnity #GameDev #Horro

Yeah, I've built myself a controller and it's so awesome! Just add a few buttons, two joysticks, a microchip and of course some rgb leds. That makes the build complete!

Check out the link to build yourself one too!

#DIY

Our Slime Heroes quests have ended.

Congratulate the winners (who are all tagged in the article.)

Discover the game for yourself: https://bit.ly/slimeheroes

Yes, I'm still alive!

AND I've finally fixed major bugs in the game. The new release should be out soon!

#GameDev #Hayamichan