繁体   English   中英

Unity /克隆敌人无法正常工作/ C#

[英]Unity / Cloned Enemies don't work as intended / C#

我有一个地形,上面放置了两个敌人,还有一个平面,该平面已赋予脚本以连续生成敌人(基本上是没有塔的波浪防御)

我按照计划放置的两个敌人会杀死他们,这会给他们带来经验,并且与他们接触会给玩家带来一些健康。

但是,由我的脚本飞机生成的飞机并不能杀死对方,他们接触时会对健康造成伤害的唯一原因是因为我将碰撞设置为寻找他们拥有的“敌人”标签。

# THE SCRIPT FOR THE ENEMY-SPAWNING PLANE

IEnumerator Spawner()
{
    yield return new WaitForSeconds(startWait);

    while(!stop)
    {
        randEnemy = Random.Range(0, 2);
        Vector3 spawnPosition = new Vector3(Random.Range(-spawnValues.x, spawnValues.x), 2, Random.Range(-spawnValues.z, spawnValues.z));

        Instantiate(enemies[randEnemy], spawnPosition + transform.TransformPoint(0, 0, 0), gameObject.transform.rotation);

        yield return new WaitForSeconds(spawnWait);
    }
}

# THE SCRIPT WHICH CALLS FOR EXPERIENCE TO BE GIVEN (Enemy as GameObject)

void Dead()
{
    _characterXP.GainExp(120);
    Destroy(gameObject);
}

# THE SCRIPT WHICH GIVES THE PLAYER EXPERIENCE (CharacterXP as GameObject)

public void GainExp(float expThatWasGained)
{
    CurrentExp += expThatWasGained;
}

我对Unity和C#还是很陌生,因此如果需要提供其他任何功能,我已经检查了所有相关对象,以确保相关内容正确连接,如果它们无法正常工作,则可能会影响最初的敌人,问题仅在于产生的敌人被命名为ENEMY(Clone)


编辑

预制件 预制件^


预先产生的敌人中游 预先产生的敌人中期游戏^
克隆敌人中期游戏 克隆敌人中期游戏^

您无法将场景对象分配给预制属性字段。 您只能将其他预制件(或资产)分配到预制件的属性插槽中。 要将场景对象分配给敌方脚本,您需要在运行时找到它。

在敌人的Start方法中,找到fpscontroller

void Start()
{
    _characterXP = GameObject.FindObjectOfType<FPSController>();
}

我认为这可以解决您的问题

在此处输入图片说明

这不是最明智的方法,但是我的时间很紧,该方法仍然有效。

我在可玩区域之外建立了两个监狱,并在其中放置了一个敌人,然后将这两个被困的人介绍给我的Monster Spawner(The Plane),而不是预制物,现在每次击杀可获得正确的经验值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM