unity3d 为什么当我试着让我的玩家传送到物体上时它会说这个?

jei2mxaa  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(152)

我的错误是
CS0029无法将类型"UnityEngine. GameObject"隐式转换为"UnityEngine.Vector3"
代码:

{
    GameObject snowball = GameObject.Find("LaunchSlingshotProjectile").GetComponent<SnowballThrowable>().projectilePrefab;
    GorillaLocomotion.Player.Instance.transform.position = snowball;
}

我试着把它加到一个变量中,但它什么也没做

yi0zb3m4

yi0zb3m41#

GameObject snowball = GameObject.Find("LaunchSlingshotProjectile")

现在雪球是一个游戏对象;

SnowballThrowable sbthrowable = snowball.GetComponent<SnowballThrowable>();

sbthrowable是一个组件。

GameObject tile = sbthrowable.projectilePrefab;

tile是一个自己定义的游戏对象变量。

Vector3 pos = tile.transform.position;

pos变量的类型为Vector 3,只能为相同类型的变量赋值

GorillaLocomotion.Player.Instance.transform.position = pos;
hs1ihplo

hs1ihplo2#

试试看

GorillaLocomotion.Player.Instance.transform.position = GameObject.Find("LaunchSlingshotProjectile").GetComponent<SnowballThrowable>().projectilePrefab.transform.position;

您的错误在于您试图设置一个位置

GorillaLocomotion.Player.Instance.transform.position = ...

它是一个Vector3,你给它传递了一个GameObject,所以编译器无法理解.
一个技巧是将GameObject.Find("LaunchSlingshotProjectile")存储在变量中,这样就不会一直执行这个操作,因为Find很慢。

相关问题