当前位置:  开发笔记 > 编程语言 > 正文

敌人出现在5号球员机会1后面

如何解决《敌人出现在5号球员机会1后面》经验,为你挑选了1个好方法。

我写了一个脚本让敌人出现在玩家后面,每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;
}

好多了.



1> Richard Iron..:

首先要注意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;
}

好多了.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有