Unity3d:如何使对象跟随播放器

时间:2014-01-16 02:01:23

标签: triggers unity3d

基本上我需要Coins(范围内的GameObject)在玩家进入PowerUp(GameObject)的触发器之后跟随玩家一段时间。 我的脚本是PowerUp对象的一个​​组件。问题是我不知道如何使硬币跟随播放器,瞬间PowerUp跟随播放器。

OnTriggerEnter (other : Collider)
{   
if(other.tag == "Player")
{   
    transform.LookAt(Player);

        if(Vector3.Distance(transform.position,Player.position) >= MinDist)
            { 
                transform.position +=      transform.forward*MoveSpeed*Time.deltaTime;
            }
        if(Vector3.Distance(transform.position,Player.position) <= MaxDist)
            {
                score = score + 5;
                Debug.Log("Player Score" + score);
                Destroy(gameObject);
            } 
}

2 个答案:

答案 0 :(得分:0)

结合你的IF

你的最低和最高支票向后......

currentDist = Vector3.Distance(transform.position,Player.position)

if (currentDist<max)
  move towards player

if(currentDist<min)
  collect coin

also add a timer
followTime += Time.deltaTime
if (followTime > MaxTime)
  Destroy(this.gameobject)

答案 1 :(得分:0)

由于我还没有发表评论(新用户)我会发一个答案,即使这更像是对CthulhuJon给出的答案的详细说明。

我只是想建议你计算你的硬币和玩家之间的向量,并沿着那个向量移动,而不是让硬币看向玩家并沿着向前移动。例如:

Vector3 moveDir = player.tranform.position - coin.transform.position;
coin.transform.position += moveDir.normalized * speed * Time.deltaTime;

注意:代码未经测试,但想法应该清楚。 通过这种方式,您可以在硬币上制作动画(例如,围绕它的本地上轴旋转,典型的硬币行为)。此外,如果你愿意,你当然可以称之为LookAt(播放器),但我认为按照我的描述实现它将不那么容易出错。因为无论你对那枚硬币做什么,它仍会朝你想要的方向移动,即向玩家移动。