繁体   English   中英

Teleporting to a projectile - 移动玩家错误

[英]Teleporting to a projectile - Moving the player error

我一直在从事一个项目,涉及实例化一个球体,然后在击中我用“地板”标记的任何 object 时将玩家传送到它的位置。 我对编程比较陌生,因此非常感谢您的帮助。

  void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.tag == "Floor")
        {
            script.canShoot = true;
            isTriggered = true;
            player.transform.position = teleportLocation;
            Destroy(gameObject);
            Debug.Log("hit floor");
        }

目前,我的“teleportLocation”只是球体常量 position。

目前我面临的问题是移动播放器,我用播放器替换了一个在设置 position 时确实有效的立方体。这是我用于实例化射弹的脚本:

  Vector3 dir = mouse.transform.position - transform.position;
        if (!disabled)
        {

             GameObject instance = Instantiate(orbPrefab, orbShooter.transform.position, orbPrefab.transform.rotation);
             instance.GetComponent<Rigidbody>().AddForce(dir * power);
             instance.transform.position = new Vector3(0, 0, 0);

        }

我能够成功将玩家传送到球体的唯一方法是通过这个脚本:

public class teleport : MonoBehaviour
{
    public Vector3 tpPos;
    public GameObject testOrb;
    // Start is called before the first frame update
    void Start()
    {
     
    }

    void Update()
    {
        tpPos = testOrb.transform.position;
        if (Input.GetKeyDown(KeyCode.E))
        {
            transform.position = tpPos;
        }
    }
}

当我按下“E”时,我可以将玩家移动到一个球体(这不是实例化的 object 而是通过单击移动的普通游戏 object),这似乎有效。 问题似乎不在于碰撞检测或变换位置,而是在于实例化。 如果有人知道可以将我的玩家传送到实例化的球体的方法,那将会很有帮助。

以上涉及我尝试过的不同事情......

找到了解决方案,该解决方案仅涉及在附加到播放器的脚本内部创建一个方法,该方法将播放器转换 position 更改为球体。 当它与地板碰撞时,然后在 orb 脚本内部调用该方法。 问题似乎出在脚本内部出于某种原因调用传送的位置,希望其他人也能理解是否也有此问题。

很抱歉回答晚了,我一直在有限的时间范围内完成项目(通常每个项目 5 周或更短时间),并且一旦我解决了它就继续前进太快了。 我记得这个问题是由于脚本中动作发生的顺序造成的。 我不完全确定,但我只能说:

我想让我的玩家射击一个球体(通过实例化)然后让他们传送到球体(我认为这可以通过简单地设置player.transform.position = orb.transform.position来完成

然而,这没有效果。 然后我尝试以不同的方式设置播放器 position 并解决问题是碰撞还是其他原因造成的。 碰撞非常好。

在此之后,我最后的努力是在玩家脚本(附加到玩家对象)中创建一个子例程 / function,然后从 orb 脚本调用 function(当它撞击地板时)。

我没想到这会起作用,但它确实起作用了,所以我只能怀疑这个问题是被调用的顺序中的某种错误? 我不完全确定,但如果您需要进一步详细说明,我很乐意这样做:感谢您的耐心等待 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM