Jump to content
Unity Insider Forum
Thariel

Mathematische Frage

Recommended Posts

Hi

Ich habe eine mathematische Frage und weiss gerade nicht, wie ich das am besten Löse und weiss auch nicht, nach welchem Begriff ich suchen könnte.

Im Spiel kann man Fischfallen bauen. Eine Falle fängt 10 Fische pro Tag. Wenn man zwei fallen direkt nebeneinander baut, fängt man aber natürlich nicht 20 Fische, weil die Menge an Fisch im Ozean begrenzt sind.

Eine Falle hat eine Effektifität von 100%. Zwei Fallen nebeneinander eine Effektivität von 66% (100/1.5). Die Effektivität nimmt mit der Distanz aber wieder zu. Ab 30m Distanz, ist die Effektivität wieder 100% (100/1).

Also

Distanz:
0<---------------------------------------->30

Effektivität:
1.5<---------------------------------------->1

Das heisst, bei einer Distanz von 15m. wäre die Effektivität beider Fallen bei 80% (100/1.25) und würden zusammen 16 Fische fangen, statt 20.

Meine Fragen:

  • Wie nennt man diese Art von Berechnung, wonach müsste ich suchen?
  • Gibt es dafür in Unity oder C# eine Funktion?
  • Wie berechne ich das genau, dass ich die Effektivität erhalte, wenn ich die Distanz kenne?

Danke schon mal :)

Share this post


Link to post
Share on other sites

Kommt jetzt drauf an, wie die Kurve aussieht. Könnte ein Logarythmus sein oder ein Wellenfunktion wie Sinus oder Cosinus.
Such nach Mathf.Log bzw. Log10 oder Sin oder Cos und nimm einen von dir festgelegten Bereich innerhalb der Kurve.

Share this post


Link to post
Share on other sites

Es ist keine Kurve, sondern Linear/Proportional. Schaue mir das mal an, aber ich glaube Log/Log10 fällt schon mal weg.

Distanz 0 = Effektivität 1.5

//Alle Zwischenschritte

Distanz 15 = Effektivität 1.25

//Alle Zwischenschritte

Distanz 30 = Effektivität 1

 

EDIT:

Ich glaube ich habs jetzt raus!

Share this post


Link to post
Share on other sites

Jo, es ist schon so lange her mit Mathe. ;)
Aber im Endeffekt hast du nur ne Scalenverschiebung.
Ich würde es so machen:
Als erstes abfragen ob du nicht außerhalb der Maximaldistanz bis (deine 30 Meter wo eh 100% erreicht sind). Wenn ja, einfach mit 100% rechnen. Wenn nein folgende Berechnung durchführen.

Effektivpunkt= posi (z.b.12m) / maxPosi (die 30m)   //ergibt 0.4
Effektbereich = maxwert (1.5) - minimalwert (1) // ergibt 0.5
Effektivitaet= maxwert- Effektivpunkt*Effektivbereich   // ergibt 1.3 weil 1.5 - 0.4*0,5
100/Effektivitaet= rund 76.9%

 

  • Like 1

Share this post


Link to post
Share on other sites

Ja genau 🤣

Habs jetzt so ähnlich gemacht:

float effLoss = (distance / 30.0F) * 0.5F;
effLoss = 0.5-effLoss;
effLoss++;
//jetzt ist effLoss zwischen 1-1.5 in Relation zu den 0-30m

Danke nochmals

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×