Willekeurige nummers in Unity3D?

Wat ik vond, was hoe willekeurige nummers. Super goed. Deze oplossing werkte echter niet in andere functies. Om een ​​willekeurig getal te maken, gebruikte ik

Random randomDirection = new Random();
int directionChoice = randomDirection.Next(1, 4); 

Binnenkant van een functie genaamd Enemywalk () {};

Dit veroorzaakte echter een fout:

Type ‘UnityGine.Random’ bevat geen definitie voor ‘volgende’ en
Geen extensie-methode ‘Volgende’ van Type ‘Unityengine.Random’ kan worden gevonden
(Ontbreekt u een RILE of A Montage Reference?)

Deze fout verschijnt niet wanneer ik de willekeurige integergenerator uit de functie inneem. Alle oplossingen om dit probleem op te lossen?

Ik hoop om deze code te gebruiken om mijn vijand rond te laten dwalen wanneer hij niets doet door willekeurig een geheel getal te kiezen die beslist welke richting hij loopt (omhoog, links, rechts of omlaag), dan met behulp van een willekeurige dubbele generator Bepaal de afstand die het loopt. Ik heb echter een willekeurig getal nodig wanneer enemyWalk(){};wordt genoemd.


Antwoord 1, Autoriteit 100%

In Unity C # is de methode als volgt

Random.Range(minVal, maxVal);

Zie Unity Documentation – Random

De methode accepteert ofwel getal- of float-argumenten. Als het gebruik van Ints minValis inclusief en maxValis Exclusive van de geretourneerde willekeurige waarde. In uw geval zou het zijn:

Random.Range(1,4);

In plaats van Next(1,4).

Bij gebruik van floats, bijvoorbeeld

Random.Range(1.0F, 3.5F);

De geretourneerde waarde is ook een float, minValen maxValzijn in dit geval inclusief.


Antwoord 2, autoriteit 40%

De eenvoudige oplossing zou zijn om gewoon de klasse Randomvan .NET te gebruiken, die zich toevallig in de naamruimte Systembevindt:

using System;
...
//Or System.Random without the using
Random randomDirection = new Random();
int directionChoice = randomDirection.Next(1, 5);

Als je Unity’s wilt gebruiken, bel dan Rangein plaats van Next:

int directionChoice = randomDirection.Range(1, 5);

Merk op dat “max” in beide gevallen exclusiefis, dus u moet 5 gebruiken om waarden tussen 1 en 4 (inclusief 4) te retourneren.

Om willekeurige floatte krijgen:

Random.NextDouble(); //careful, this is between 0 and 1, you have to scale it
//Also, this one is exclusive on the upper bound (1)
Random.Range(1f, 4f); //max is inclusive now

Other episodes