从另一个GameObject的脚本设置转换

Osc*_*yes 3 instantiation unity-game-engine unityscript gameobject

我正在尝试创建一个脚本来设置实例化时的对象.问题是,我不清楚如何做到这一点.我有这个功能..

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

PlayerPrefab将成为将要实例化的预制件.当发生这种情况时,我需要在另一个GameObject上设置实例化的gameObject,这个GameObject是一个名为"Camera Control"的脚本,里面有一个我想要设置的变换Target.这该怎么做?

Fun*_*onR 21

您发布的代码不正确.您正在使用PlayerPrefab的名称来查找连接到相机的Camera Control脚本?通过该逻辑,然后在实例化的那一刻PlayerPrefab,在第二行,您将有第二个相机.

我想你想要做的是:实例化播放器预制并让相机指向播放器.

所以我假设CameraControl脚本已创建.在开始编码之前,您需要以下内容.

  1. CameraControl脚本附加到场景中的摄像机.

    在此输入图像描述

  2. 确保Player脚本已附加到Player Prefab.

    在此输入图像描述

  3. 有第三个脚本将实例化PlayerPrefab.我会打电话给它Instantiator.将它附加到场景中的空GameObject,将其视为世界GameObject.我们称之为世界.

  4. 确保Instantiator脚本附加到World GameObject并且它指向PlayerPrefab.

    在此输入图像描述


代码:Instantiator

Instantiator脚本将生成并创建我们将在场景中使用的内容.

 #pragma strict

var PlayerPrefab : GameObject;

function Start () 
{
    // You can add position and rotation to the function call if you like.
    var p = Instantiate(PlayerPrefab) as GameObject;

    // Find the camera script and point to Player's transform.
    Camera.main.GetComponent("CameraControl").SendMessage("setTarget", p.transform);
}
Run Code Online (Sandbox Code Playgroud)

注意我使用的事实是场景中的MainCamera为你标记,因此很容易找到.


代码:CameraControl

如果CameraControl您认为合适,将具有遵循播放器的逻辑.请注意,目标将指向相机将关注的内容.当然,在播放器周围你必须写.

var target : Transform;

function setTarget(t : Transform)
{
    target = t;
}
Run Code Online (Sandbox Code Playgroud)

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