t1 / TFDContents / Assets / KinectDemos / VisualizerDemo / Scripts / BallSpawner.cs @ 3
이력 | 보기 | 이력해설 | 다운로드 (1.81 KB)
1 | 3 | KTH | 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 | } |