【问题标题】:Transform GameObject变换游戏对象
【发布时间】:2011-07-28 10:08:47
【问题描述】:

我正在尝试将对象移动到存储在数组中的多维数据集。

数组中填充了带有标签的游戏​​对象。

我可以让对象立即移动到立方体,但不像它走向它那样缓慢。

这是我的脚本:

var moveTo : GameObject;

function Update(){
    print(FindClosestEnemy().name);
}

function FindClosestEnemy():GameObject{

    var chasePoints : GameObject[];
    chasePoints = GameObject.FindGameObjectsWithTag("chasePoint");
    var closest : GameObject;
    var distance = Mathf.Infinity;
    var position = transform.position;

    for(var go: GameObject in chasePoints){
        var diff = (go.transform.position-position);
        var curDistance = diff.sqrMagnitude;
        if(curDistance < distance){
            closest = go;
            moveTo = closest;
            transform.position -= moveTo.transform.position;
            distance = curDistance;
        }
    }
    return closest; 
}

我也尝试了Time.deltaTime 的东西,但它会传送到远离立方体的地方。

只是将其转换为 Transform Array 也行不通 :( 有什么想法可以让它工作吗?

非常感谢您的帮助 :) 提前致谢!

【问题讨论】:

    标签: unity3d transform unityscript gameobject


    【解决方案1】:

    看起来您在一帧中完成了整个转换。您需要选择一个速度并将其应用于每一帧的对象。你知道从和到。选择您希望它花费多长时间并逐步更新它。请记住,您不能确定每秒会有 60 帧,因此请考虑到这一点。

    【讨论】:

      【解决方案2】:

      你可以使用 Vector3.MoveTowards

      对于 maxDistanceDelta,您选择一个速度并将其与 Time.deltaTime 相乘以与帧长度无关:

      Vector3.MoveTowards(transform.position, moveTo.transform.position, speed * Time.deltaTime);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多