让一个GameObject成为一名小队成员

时间:2016-08-15 05:43:43

标签: unity3d

我想拥有一个GameObject,它跟随我的玩家并始终保持在他的左边。 我不想让它成为一个孩子,因为我看起来不自然,我也玩NavmeshAgent,但第二个对象太慢/它移动太多。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

一个解决方案就是:

  1. 将一个空的GameObject(我称之为SquadPoint)添加为该主要玩家对象的子项并将其放置在所需位置(左侧)。

  2. 将您的实际小队成员直接放置在场景中(我假设小队成员附加了一个控制器脚本,我称之为SquadMemberController

  3. 将以下代码添加到SquadMemberController脚本

  4. 这应该让小队成员跟随SquadPoint,因为SquadPoint是主要玩家的孩子,它会随着主要玩家的移动而旋转。

    const float threshold = 1f;
    
    public float speed;          //set in inspector
    public Transform SquadPoint; //set in inspector
    
    void FixedUpdate(){
    
       //move towards SquadPoint with given speed
       var distance = SquadPoint.position - transform.position;
       if(distance.magnitude > threshold)
       {
          var direction = distance.normalized;
          transform.position += direction * speed * time.fixedDeltaTime;
    
          //rotate immediately
          transform.LookAt(SquadPoint.position);
       }
       else
       {
          //... very close to main player
       }
    }