Unity3d 从另一个游戏对象设置变换';手稿

Unity3d 从另一个游戏对象设置变换';手稿,unity3d,instantiation,unityscript,gameobject,Unity3d,Instantiation,Unityscript,Gameobject,我试图制作一个脚本,在实例化对象时设置对象。问题是,我不清楚该怎么做。我有这个功能 function spawnPlayer() { var CameraScript = GameObject.Find(PlayerPrefab.name).GetComponent("Camera Control"); Network.Instantiate(PlayerPrefab, spawnObject.position, Quaternion.identity, 0); } Playe

我试图制作一个脚本,在实例化对象时设置对象。问题是,我不清楚该怎么做。我有这个功能

function spawnPlayer()
{
    var CameraScript = GameObject.Find(PlayerPrefab.name).GetComponent("Camera Control");
    Network.Instantiate(PlayerPrefab, spawnObject.position, Quaternion.identity, 0);
}

PlayerPrefab将成为实例化的预置。当这种情况发生时,我需要在另一个游戏对象上设置实例化的游戏对象,这个游戏对象是camera,有一个名为“camera Control”的脚本,里面有一个我正在尝试设置的变换目标。如何做到这一点?

您发布的代码可能不正确。您正在使用PlayerRefab的名称查找附加到相机的相机控制脚本?按照这个逻辑,当您在第二行实例化PlayerPrefab时,您将拥有第二个摄像头

我想你要做的是:实例化播放器预置,让摄像机指向播放器

因此,我假设创建了
CameraControl
脚本。在我们开始编码之前,您需要以下内容

  • CameraControl
    脚本附加到场景中的摄影机

  • 确保
    Player
    脚本已附加到播放器预置

  • 第三个脚本将实例化PlayerPrefab。我将其称为
    实例化器
    。将其附加到场景中的空游戏对象,将其视为世界游戏对象。我们称之为世界

  • 确保
    实例化器
    脚本已附加到World Game对象,并且它指向PlayerPrefab


  • 代码:实例化器
    实例化器
    脚本将生成并创建我们将在场景中使用的东西

    #pragma strict
    var PlayerPrefab:游戏对象;
    函数启动()
    {
    //如果愿意,可以将位置和旋转添加到函数调用中。
    var p=实例化(PlayerPrefab)为游戏对象;
    //找到摄影机脚本并指向玩家的变换。
    Camera.main.GetComponent(“CameraControl”).SendMessage(“setTarget”,p.transform);
    }
    
    请注意,我使用了这样一个事实:场景中的主摄影机由Unity标记,因此很容易找到


    代码:CameraControl
    CameraControl
    将具有您认为合适的跟随播放器的逻辑。请注意,目标将指向相机将聚焦的对象。当然,跟随周围的玩家你将不得不写作

    var目标:转换;
    函数setTarget(t:Transform)
    {
    目标=t;
    }
    

    我只是自学了一点JavaScript。我以前从未使用过它。

    我找到了解决方案

    我在问题上的意思是将相机的脚本设置为实例化对象的变换

    我不必用每个对象的脚本值创建许多空对象;我花了几个小时才找到它,因为我不知道unity如何处理脚本对象调用

    我就是这样做的:

    var PlayerPrefab : GameObject;
    var spawnObject : Transform;
    private var MainCamera : GameObject;
    
    function spawnPlayer()
    {
        var player = Instantiate(PlayerPrefab, spawnObject.position, Quaternion.identity);
        MainCamera = GameObject.Find("MainCamera");
    
        player.name = "Ball";
    
        if(MainCamera)
        {
            MainCamera.GetComponent.<CameraControl>().target = player.transform;
            Debug.Log("Succeed.");
        }
    }
    
    var PlayerPrefab:GameObject;
    变量对象:变换;
    私人摄像机:游戏对象;
    函数名为player()
    {
    var player=Instantiate(PlayerPrefab,spawnObject.position,Quaternion.identity);
    MainCamera=GameObject.Find(“MainCamera”);
    player.name=“Ball”;
    如果(主摄像头)
    {
    MainCamera.GetComponent.(.target=player.transform);
    Log(“成功”);
    }
    }
    

    这样,我的相机将自动具有新实例化对象的变换属性。

    你的游戏真的是多人游戏吗,或者是
    网络。实例化
    是一个打字错误吗?我甚至不明白你有什么问题。对不起。你知道这和我贴的是同一件事吗?这似乎是不同的,因为代码使用不同的功能或不同的顺序,解释文本也不同。可能没有恶意。您应该接受您自己的或FunctionR提供的解决方案,以便问题得到可接受的答案,否则它将保留在不可接受的答案列表中。。。