【发布时间】:2016-07-30 10:20:52
【问题描述】:
在层次结构中,我有 2 个 ThirdPersonController。 在 Window > Animator 中,我创建了新的空状态,称为 Walk,并将其设置为 HumanoidWalk,因此在运行游戏时,两个玩家都在行走。
我在其中一个上添加了脚本,并将第二个 ThirdPersonController(1) 作为预制件。
然后在运行游戏时,它会复制 ThirdPersonController(1)。 所以我在层次结构中看到了更多的 N ThirdPersoncontrollers。
今天要更改每个 ThirdPersonController 的行走速度,我在 Inspector 中更改了 Move Speed Multiplier。 但是,如果我在创建克隆时已经想在脚本中设置为彼此的速度,我该怎么做?
using UnityEngine;
using System.Collections;
public class Multiple_objects : MonoBehaviour {
public GameObject prefab;
public GameObject[] gos;
public int NumberOfObjects;
void Awake()
{
gos = new GameObject[NumberOfObjects];
for(int i = 0; i < gos.Length; i++)
{
GameObject clone = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
gos [i] = clone;
}
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
我现在尝试的是获取 Prefab 的 Animator 组件并将速度设置为所有克隆:
using UnityEngine;
using System.Collections;
public class Multiple_objects : MonoBehaviour {
public GameObject prefab;
public GameObject[] gos;
public int NumberOfObjects;
private Animator _animaotr;
void Awake()
{
gos = new GameObject[NumberOfObjects];
for(int i = 0; i < gos.Length; i++)
{
GameObject clone = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
gos [i] = clone;
_animaotr.speed = 10;
}
}
// Use this for initialization
void Start () {
_animaotr = prefab.GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
}
}
但主要问题是在层次结构中的第一个 ThirdPersonController 上,我在 Window > Animator 空状态中创建的原始控制器将其称为 Walk 并设置 HumandoidWalk。
现在设置速度由于某种原因改变 Animator 的速度永远不会影响任何东西,例如:
_animaotr.speed = 10;
仅当在 ThirdPersonController > Inspector > Third Person Character (Script) > Move Speed Multiplier 中更改速度时。它正在以相同的速度改变层次结构中的所有 ThirdPersoncontrollers,包括这个我克隆。
但是我如何将每个克隆速度更改为另一个速度值?为什么 _animator.speed 没有改变任何东西而我需要使用这个移动速度倍增器?
【问题讨论】:
标签: c# unity3d unityscript unity5