基本上我需要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);
}
}
答案 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(播放器),但我认为按照我的描述实现它将不那么容易出错。因为无论你对那枚硬币做什么,它仍会朝你想要的方向移动,即向玩家移动。