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
脚本已创建.在开始编码之前,您需要以下内容.
将CameraControl
脚本附加到场景中的摄像机.
确保Player
脚本已附加到Player Prefab.
有第三个脚本将实例化PlayerPrefab.我会打电话给它Instantiator
.将它附加到场景中的空GameObject,将其视为世界GameObject.我们称之为世界.
确保Instantiator
脚本附加到World GameObject并且它指向PlayerPrefab.
该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
您认为合适,将具有遵循播放器的逻辑.请注意,目标将指向相机将关注的内容.当然,在播放器周围你必须写.
var target : Transform;
function setTarget(t : Transform)
{
target = t;
}
Run Code Online (Sandbox Code Playgroud)
我只是自学了一点JavaScript.我之前从未使用过它.