首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在射程内如何使敌方圈子玩家?

在射程内如何使敌方圈子玩家?
EN

Stack Overflow用户
提问于 2018-02-22 21:51:16
回答 2查看 578关注 0票数 0

我正在写一个可能很简单的脚本。因为我是个编程新手,所以很有可能我的代码看起来很糟糕。

好的,事情是这样的:我有一个敌人被触发,只有当玩家接近某个点时才会产卵。然后敌人必须跟随玩家,不管他在哪里,并保持一定的范围3个单位。到这一点。一切都很好。

现在,似乎行不通的是,我需要我的敌人在我的玩家周围“绕圈”,当他在一定的范围内(3),并且只有在那时。现在,它正从我错过的start...what轨道上运行??

到目前为止,这是我的代码:

代码语言:javascript
复制
public Transform mTarget;
float mSpeed = 10.0f;
const float EPSILON = 3.0f;
public float speed;

void Start()
{
    OrbitAround (); 
}

void Update() {
    transform.LookAt (mTarget.position);
    if ((transform.position - mTarget.position).magnitude > EPSILON)
        transform.Translate (0.0f, 0.0f, mSpeed * Time.deltaTime);
}

void OrbitAround() {
    if(Vector3.Distance(transform.position, mTarget.transform.position) < 3) {
        transform.RotateAround (mTarget.transform.position, Vector3.up, speed * Time.deltaTime);
    }       
}

非常感谢,如果有人能帮我的话。

干杯,

EN

回答 2

Stack Overflow用户

发布于 2018-02-23 10:57:29

正如@Zibelas所说,Start函数只有一次。

Unity文档说明:

在第一次调用任何

方法之前启用脚本时,会在帧上调用Update Start。

因此,尝试将对OrbitAround()的调用放在更新函数中,它应该可以工作

票数 0
EN

Stack Overflow用户

发布于 2018-02-24 20:35:34

好吧,并没有真正解决这个问题,但我找到了一种方法来解决它。

我只是启用了脚本来环绕目标,当敌人接近它时,当玩家再次离开时,禁用它。

代码语言:javascript
复制
void Update (){

        if (Vector3.Distance (transform.position, mTarget.transform.position) < 15) {
            script.enabled = true;
        }
            if(Vector2.Distance(transform.position, mTarget.transform.position) >15) {
                script.enabled = false;
        }

尽管如此,还是要感谢你们的评论和信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48929116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档