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 minVal
is inclusief en maxVal
is 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, minVal
en maxVal
zijn in dit geval inclusief.
Antwoord 2, autoriteit 40%
De eenvoudige oplossing zou zijn om gewoon de klasse Random
van .NET te gebruiken, die zich toevallig in de naamruimte System
bevindt:
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 Range
in 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 float
te 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