프로젝트

일반

사용자정보

통계
| 개정판:

t1 / TFDContents / Assets / KinectDemos / VisualizerDemo / Scripts / BallSpawner.cs @ 3

이력 | 보기 | 이력해설 | 다운로드 (1.81 KB)

1
using UnityEngine;
2
using System.Collections;
3

    
4
public class BallSpawner : MonoBehaviour 
5
{
6
	[Tooltip("Index of the player, tracked by this component. 0 means the 1st player, 1 - the 2nd one, 2 - the 3rd one, etc.")]
7
	public int playerIndex = 0;
8

    
9
	[Tooltip("Prefab used to instantiate balls in the scene.")]
10
    public Transform ballPrefab;
11

    
12
	[Tooltip("Prefab used to instantiate cubes in the scene.")]
13
	public Transform cubePrefab;
14
	
15
	[Tooltip("How many objects do we want to spawn.")]
16
	public int numberOfObjects = 20;
17

    
18
    private float nextSpawnTime = 0.0f;
19
    private float spawnRate = 1.5f;
20
	private int ballsCount = 0;
21
 	
22

    
23
	void Update () 
24
	{
25
        if (nextSpawnTime < Time.time)
26
        {
27
            SpawnBalls();
28
            nextSpawnTime = Time.time + spawnRate;
29

    
30
			spawnRate = Random.Range(0f, 1f);
31
			//numberOfBalls = Mathf.RoundToInt(Random.Range(1f, 10f));
32
        }
33
	}
34

    
35
    void SpawnBalls()
36
    {
37
		KinectManager manager = KinectManager.Instance;
38

    
39
		if(ballPrefab && cubePrefab && ballsCount < numberOfObjects &&
40
			manager && manager.IsInitialized() && manager.IsUserDetected(playerIndex))
41
		{
42
			long userId = manager.GetUserIdByIndex(playerIndex);
43
			Vector3 posUser = manager.GetUserPosition(userId);
44

    
45
			float xPos = Random.Range(-1.5f, 1.5f);
46
			float zPos = Random.Range(-1.5f, 1.5f);
47
			Vector3 spawnPos = new Vector3(posUser.x + xPos, posUser.y, posUser.z + zPos);
48

    
49
			int ballOrCube = Mathf.RoundToInt(Random.Range(0f, 1f));
50

    
51
			Transform ballTransform = Instantiate(ballOrCube > 0 ? ballPrefab : cubePrefab, spawnPos, Quaternion.identity) as Transform;
52
			ballTransform.GetComponent<Renderer>().material.color = new Color(Random.Range(0.5f, 1f), Random.Range(0.5f, 1f), Random.Range(0.5f, 1f), 1f);
53
			ballTransform.parent = transform;
54

    
55
			ballsCount++;
56
		}
57
    }
58

    
59
}