如何创建一个统一事件来确定物体之间的距离,并在距离足够小时做一些事情?

问题描述 投票:0回答:2

我正在尝试使用EventManager和根据事件计算对象之间的距离,并在有足够的对象靠近目标时执行某些操作。

我在YouTube上观看了视频并在Google上搜索了一些示例,但我找不到看起来像我想要的内容。当然我也看了一般事件的解释视频,但我不明白。它们都是英语,这不是我的母语,这使得它很难理解。所以,也很抱歉任何语法错误。他们经常聊得那么快。所以请不要以为我很懒,我已经搜索了几个小时,但我只是没有得到它。

我有一个目标对象和几个敌人对象。这个敌人的物体有'敌人'标签。目标对象可以移动。我做了一个协程,所以当目标移动时,敌人跟随,直到距离为0.5。但是从他们达到0.5的距离那一刻起,敌人将不再移动。相反,当他们已达到目标位置时,他们也应该遵循目标。所以为了防止这种情况,我改变了while(Vector3.Distance(transform.position, target.position) > 0.5f)中的while 1 > 0,(所以只是一直),我删除了关于'在while循环之后'的代码部分。但这可能不是正确的方法。

所以,简而言之,我想制作一个能够追踪敌人何时到达或失去目标位置的事件。当三个敌人在目标位置时,我想让它们变成蓝色。

谁能告诉我怎么做到这一点?我现在不知道,但是当我看到它如何工作时,我可以将它用于游戏中的更多事件。

unity3d unity5
2个回答
0
投票

我想你可以使用触发器对撞机,只需使它大于你的目标物体,然后在方法OnTriggerEnter,OnTriggerStay中做你想要的所有敌人


0
投票

作为另一种技术,您可以使用光线投射。 Raycasts将为您提供比对撞机更多的性能。

您可以将光线投射定位在目标位置,以防光线投射击中敌人然后将其变为蓝色。例如;

public LayerMask enemyLayer; bool isTouch = false;

public bool isTouched(){
        if (Physics.Raycast(transform.position,-Vector3.up,1f,enemyLayer)) {
            isTouch = true;
            return isTouch ;
        }
        return !isTouch ;
    }
© www.soinside.com 2019 - 2024. All rights reserved.