为什么当我尝试让我的播放器传送到它说这个的对象时?

问题描述 投票:0回答:2

我的错误是

CS0029 无法将类型“UnityEngine.GameObject”隐式转换为“UnityEngine.Vector3”

代码:

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

我尝试将它添加到变量中,但它什么也没做

c# unity3d
2个回答
0
投票
GameObject snowball = GameObject.Find("LaunchSlingshotProjectile")

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

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

sbthrowable 是一个组件。

GameObject tile = sbthrowable.projectilePrefab;

tile是自己定义的GameObject变量。

Vector3 pos = tile.transform.position;

pos变量的类型是Vector3, 只能给相同类型的变量赋值.

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

0
投票

试试

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

你的错误是你试图设置位置

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

这是一个 Vector3,你正在为它传递一个 GameObject,所以编译器不理解。


一个技巧是将任何

GameObject.Find("LaunchSlingshotProjectile")
存储在变量中,这样您就不会一直执行此操作,因为查找速度很慢。

© www.soinside.com 2019 - 2024. All rights reserved.