Beispiel #1
0
        protected virtual void LateUpdate()
        {
            AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);

#if UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 || UNITY_4_6
            int id = stateInfo.nameHash;
#else
            int id = stateInfo.fullPathHash;
#endif
            if (_animationHashes.ContainsKey(id))
            {
                if (_currentAnimationName != _animationHashes[id])
                {
                    _currentAnimationName = _animationHashes[id];
                    meshAnimator.Play(_animationHashes[id]);
                }
            }
        }
Beispiel #2
0
        void SpawnCrowd()
        {
            int startIndex = 0;

            if (previousSelection == selectedOption)
            {
                startIndex = spawnedObjects.Count;
                int toRemove = spawnedObjects.Count - sizeOfCrowd;
                if (toRemove > 0)
                {
                    for (int i = 0; i < toRemove; i++)
                    {
                        if (spawnedObjects[i])
                        {
                            Destroy(spawnedObjects[i]);
                        }
                    }
                    spawnedObjects.RemoveRange(0, toRemove);
                }
            }
            else
            {
                foreach (var obj in spawnedObjects)
                {
                    if (obj)
                    {
                        Destroy(obj);
                    }
                }
                spawnedObjects.Clear();
            }
            previousSelection = selectedOption;

            Vector3 center = transform.position;

            for (int i = startIndex; i < sizeOfCrowd; i++)
            {
                Vector3 rand          = Random.onUnitSphere * radius;
                Vector3 position      = center + new Vector3(rand.x * radiusScaler.x, 0, rand.z * radiusScaler.y);
                float   disFromCenter = Vector3.Distance(center, position);
                if (disFromCenter < slopeStart)
                {
                    position.y = center.y;
                }
                else
                {
                    position.y = (disFromCenter - slopeStart) / (radius - slopeStart) * slopeAmount;
                }
                RaycastHit hit;
                if (Physics.Raycast(position + Vector3.up * 10, Vector3.down, out hit, 50, -1))
                {
                    position.y = hit.point.y;
                }
                var g = Instantiate(options[selectedOption], transform);
                g.transform.position = position;// + new Vector3(Random.value, 0, Random.value) * 2;
                g.transform.LookAt(new Vector3(0, position.y, 0), Vector3.up);
                g.transform.localScale = baseScale + Vector3.one * Random.value * 0.25f;
                if (g.GetComponent <Animator>())
                {
                    g.GetComponent <Animator>().speed = Random.Range(0.9f, 1.1f);
                    g.GetComponent <Animator>().SetInteger("Anim", Random.Range(0, 4));
                }
                else if (g.GetComponent <MeshAnimatorBase>())
                {
                    MeshAnimatorBase ma = g.GetComponent <MeshAnimatorBase>();
                    if (meshAnimationNames.Length > 0)
                    {
                        string name = meshAnimationNames[Random.Range(0, meshAnimationNames.Length)];
                        for (int a = 0; a < ma.animations.Length; a++)
                        {
                            if (ma.animations[a].AnimationName == name)
                            {
                                ma.defaultAnimation = ma.animations[a];
                                ma.Play(a);
                                break;
                            }
                        }
                        ma.speed = Random.Range(0.9f, 1.1f);
                    }
                    ma.SetTimeNormalized(Random.value, true);
                }
                spawnedObjects.Add(g);
            }
        }
Beispiel #3
0
 void OnEnable()
 {
     meshAnimator.defaultAnimation = meshAnimator.animations[1];
     meshAnimator.Play();
     meshAnimator.OnAnimationFinished += OnAnimationFinished;
 }