【发布时间】:2023-01-17 06:49:08
【问题描述】:
我一直在从事一个项目,涉及实例化一个球体,然后在击中我用“地板”标记的任何对象时将玩家传送到它的位置。我对编程比较陌生,因此非常感谢您的帮助。
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”时,我可以将玩家移动到一个球体(这不是一个实例化的对象,而是一个通过单击移动的普通游戏对象),这似乎有效。 问题似乎不在于碰撞检测或变换位置,而是在于实例化。如果有人知道可以将我的玩家传送到实例化的球体的方法,那将会很有帮助。
以上涉及我尝试过的不同事情......
【问题讨论】:
-
只是为了看看我是否正确,你是说你的实例化球体没有传送你的角色,只是你场景中预先存在的球体正在工作。我对吗?
-
另外,你有什么错误吗?或者事情很简单不起作用?
-
请阐明您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: c# unity3d 3d instantiation teleport