我写了一个脚本让敌人出现在玩家后面,每3分钟有5次机会,我已经把五分之一的机会改为一次机会进行测试,但我不确定是否有用.
我知道如何将敌人放在玩家身后,但不会有机会获得1对5.
我已经尝试过1到5之间的随机数.如果随机数等于1,他必须产生敌人,否则不会.
这是代码:
using UnityEngine; using System.Collections; public class MainEnemy : MonoBehaviour { public GameObject Main; public GameObject Holder; public Transform player; public Transform FPSController; bool wantPosition; bool appear; float timer; Vector3 temp; // Use this for initialization void Start() { wantPosition = true; appear = false; temp = new Vector3(0, 0, 0); timer = 20;// 180; } // Update is called once per frame void Update() { Appear(); } Vector3 GetPosition() { Debug.Log("Hij doet het getposition"); float px = player.transform.position.x; float pz = player.transform.position.z; // float angle2 = Mathf.Cos(Camera.main.transform.eulerAngles.y) + 180; // float distance = 20; float distancex = Mathf.Cos(angle2 + 180) * distance; float distancez = Mathf.Sin(angle2 + 180) * distance; // Tell distanceen bij coordinaten op temp = new Vector3(distancex, -3, distancez); return temp; } void SetFalse() { if (timer < 1) { timer = 10;// 180; // na 3 minuten weer kijken of hij hem laat zien } Main.SetActive(false); } void Position() { if (wantPosition) { temp = GetPosition(); Holder.transform.position = player.position + temp; Main.SetActive(true); if (timer < 0) { timer = 10; // kort zichtbaar } wantPosition = false; } } bool Appeared() { bool appear = false; int rand = Random.Range(1, 1); if (rand == 1) { appear = true; } else { appear = false; } return appear; } void Appear() { bool appear = false; if (timer <= 0) { appear = Appeared(); } else { timer -= Time.deltaTime; if (timer < 10) { Debug.Log(timer); } } if (appear == true) { Position(); } else { SetFalse(); } } }
Richard Iron.. 5
首先要注意Random.Range
返回一个大于或等于min
但小于(但不等于)的数字 max
.如果特殊情况在哪里min == max
,则返回该值.
其次你的Appeared
功能有点冗长.假设我们将它设置为五分之一的机会,你就有了这个:
bool Appeared() { bool appear = false; int rand = Random.Range(1, 6); if (rand == 1) { appear = true; } else { appear = false; } return appear; }
首先让我指出:
if(x) y = true else y = false
其中x是布尔条件,与说明完全相同
y = x
所以也许你会把它改成:
bool Appeared() { bool appear = false; int rand = Random.Range(1, 6); appear = rand == 1; return appear; }
现在看,为什么appear
在开始时设置为假?这个价值永远不会被使用.也许这个:
bool Appeared() { int rand = Random.Range(1, 6); bool appear = rand == 1; return appear; }
嗯,现在我们只是分配一个变量,然后在下一行返回它.好吧,也许这个:
bool Appeared() { int rand = Random.Range(1, 6); return rand == 1; }
对,是的 这看起来很熟悉.现在,我们几乎只是分配一个变量,然后在下一行返回它.我们rand
现在真的需要这个变量吗?可能不是.那么这个怎么样:
bool Appeared() { return Random.Range(1, 6) == 1; }
好多了.
首先要注意Random.Range
返回一个大于或等于min
但小于(但不等于)的数字 max
.如果特殊情况在哪里min == max
,则返回该值.
其次你的Appeared
功能有点冗长.假设我们将它设置为五分之一的机会,你就有了这个:
bool Appeared() { bool appear = false; int rand = Random.Range(1, 6); if (rand == 1) { appear = true; } else { appear = false; } return appear; }
首先让我指出:
if(x) y = true else y = false
其中x是布尔条件,与说明完全相同
y = x
所以也许你会把它改成:
bool Appeared() { bool appear = false; int rand = Random.Range(1, 6); appear = rand == 1; return appear; }
现在看,为什么appear
在开始时设置为假?这个价值永远不会被使用.也许这个:
bool Appeared() { int rand = Random.Range(1, 6); bool appear = rand == 1; return appear; }
嗯,现在我们只是分配一个变量,然后在下一行返回它.好吧,也许这个:
bool Appeared() { int rand = Random.Range(1, 6); return rand == 1; }
对,是的 这看起来很熟悉.现在,我们几乎只是分配一个变量,然后在下一行返回它.我们rand
现在真的需要这个变量吗?可能不是.那么这个怎么样:
bool Appeared() { return Random.Range(1, 6) == 1; }
好多了.