unity3d 传送到投射物-移动玩家错误

agxfikkp  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(150)

我一直在做一个项目,包括示例化一个球体,然后传送到它的位置时,球员击中任何对象,我标记为“地板”。我是相对新的编程,所以任何帮助是感激。

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”只是目前球体的恒定位置。
目前我面临的问题是移动玩家,我已经用一个立方体代替了玩家,这个立方体在设置位置时确实起作用。这是我示例化抛射体的脚本:

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”键时,我可以将玩家移动到一个球体(它不是一个示例化的对象,而是一个通过点击移动的普通游戏对象),这似乎是有效的。问题似乎不在于碰撞检测或转换位置,而是示例化。如果有人知道一种可以将我的玩家传送到示例化球体的方法,这将是很有帮助的。
以上涉及到我尝试过的不同的事情。

des4xlb0

des4xlb01#

找到了解决方案,只是涉及到创建一个方法内的脚本附加到球员,改变球员变换位置的球体。然后该方法被调用的球体脚本内,当它与地板碰撞。问题似乎是与传送被调用的脚本内的某些原因,希望其他人能理解,如果他们也有这个问题。

相关问题