我想让我的玩家传送到GameObject位置当我得到7分。 当我拿起我的项目并且我的积分变为7时,我希望我的玩家传送到GameObject的位置(Cube)这是脚本C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FpsScoreScript : MonoBehaviour
{
public int points;
public Transform Destination;
public void Start()
{
}
public void Update()
{
if (points == 7)
{
//teleport code here
}
}
}
如何让它发挥作用。我希望被传送到与"公共转换目标相关联的对象;"谢谢你的回答。
答案 0 :(得分:0)
只需将当前对象的位置设置为Destination
的位置。
gameObject.transform.position = Destination.position;
但是,如果你直接把它放在:
if (points == 7)
{
gameObject.transform.position = Destination.position;
}
由于你的points
没有改变,每一帧都会调用Update,因此你将永远传送到多维数据集。您需要有一些东西可以防止这种情况,例如将points
重置为0。
答案 1 :(得分:0)
由于你的玩家被困在地上,你可能无法移动玩家。是那样的吗?顺便说一句,这是最终的固定代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FpsScoreScript : MonoBehaviour
{
public int points;
public Transform destination;
public bool teleported;
public void Start()
{
}
public void Update()
{
if (points == 7 && !teleported)
{
gameObject.transform.position = destination.position;
teleported = true;
}
}
}
答案 2 :(得分:0)
由于您在update()函数中的检查,您的播放器无法移动。现在这是让你的玩家传送的代码。
理论值:
代码有private bool isTeleported
和private function Teleport()
。在更新函数中,我们将检查点是否等于7并且isTeleported
是否为假,然后调用Teleport()
函数。在那里我们将isTeleported
设置为true,以便update()
函数中的检查变为false,这样玩家就不会传送。
public class FpsScoreScript : MonoBehaviour
{
public int points;
public Transform Destination;
bool isTeleported = false;
public void Update()
{
if (points == 7 && !isTeleported)
{
Teleport();
}
}
void Teleport(){
isTeleported = true;
player.transform.position = destination.transform.position;
}