Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| wiki:football_explore [2022/08/01 16:36] – admin | wiki:football_explore [2022/08/01 17:29] (current) – [Football Minigame] admin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | --- // | ||
| + | |||
| + | ====== Football Minigame ====== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | <file | Finsihed Minigame > | ||
| + | This is the finished Minigame for football side minigame in Explore Module! | ||
| + | </ | ||
| ====== Prototyping ====== | ====== Prototyping ====== | ||
| + | |||
| {{ : | {{ : | ||
| - | <file | > | + | |
| + | |||
| + | <file | Prototyping | ||
| This is the prototype scene of football side minigame, The target of this side minigame people can interact and play it without trying to score. | This is the prototype scene of football side minigame, The target of this side minigame people can interact and play it without trying to score. | ||
| This time I'll using auto/ | This time I'll using auto/ | ||
| Line 10: | Line 22: | ||
| ====== State Machine ====== | ====== State Machine ====== | ||
| - | {{ :wiki:image_2022-08-02_003052113.png?nolink& | + | {{ :wiki:fsm.gif?nolink |}} |
| + | |||
| + | <file | Finite State Machine > | ||
| + | If ball detected in goal net it will fireup action state, it will play feedback, particle, audio, and reset those cone and ball. | ||
| + | |||
| + | </ | ||
| + | ====== State Machine ====== | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | <file | Automatic cone placer (Dynamic/ | ||
| + | So I create a area with a drawable Gizmos, | ||
| + | |||
| + | Gizmos.DrawWireCube(cone.transform.position, | ||
| + | |||
| + | I draw the gizmos at parent location with random rangeX and rangeZ, so as you can se above the RED line is the range I draw. | ||
| + | |||
| + | The blue one shows that I'm using random location at random point ex (0,1) (1,0) from the location. | ||
| + | Everytime user scored it will reset and set 6 cone at random location. | ||
| + | </ | ||
| + | |||
| + | <code CSharp | Full Script> | ||
| + | |||
| + | using Sirenix.OdinInspector; | ||
| + | using System.Collections; | ||
| + | using System.Collections.Generic; | ||
| + | using UnityEngine; | ||
| + | using System; | ||
| + | |||
| + | |||
| + | public class FootBallMiniGame : MonoBehaviour | ||
| + | { | ||
| + | |||
| + | public ParticleSystem particle; | ||
| + | public bool ballDetected = false; | ||
| + | |||
| + | public Transform ballResetPosition; | ||
| + | public Transform ball; | ||
| + | |||
| + | public GameObject conePrefab; | ||
| + | public Transform coneGizmo; | ||
| + | public float rangeX = 5f; | ||
| + | public float rangeZ = 5f; | ||
| + | |||
| + | private void Start() => createCone(); | ||
| + | |||
| + | public void playParticle() => particle.Play(); | ||
| + | |||
| + | public void footBallDetected() => ballDetected = true; | ||
| + | |||
| + | public void footBallLossDetection() | ||
| + | { | ||
| + | ballDetected = false; | ||
| + | } | ||
| + | |||
| + | private void OnDrawGizmos() | ||
| + | { | ||
| + | Transform cone = coneGizmo.transform; | ||
| + | |||
| + | Gizmos.color = Color.red; | ||
| + | Gizmos.DrawWireCube(cone.transform.position, | ||
| + | |||
| + | |||
| + | float x = UnityEngine.Random.Range(cone.transform.position.x, | ||
| + | float z = UnityEngine.Random.Range(cone.transform.position.z, | ||
| + | |||
| + | float randX = UnityEngine.Random.Range(-rangeX, | ||
| + | float randZ = UnityEngine.Random.Range(-rangeZ, | ||
| + | |||
| + | Gizmos.color = Color.blue; | ||
| + | float xZ = cone.transform.position.x + (int)Math.Round((decimal)randX) / 2; | ||
| + | float zZ = cone.transform.position.z + (int)Math.Round((decimal)randZ) / 2; | ||
| + | Gizmos.DrawWireCube(new Vector3(xZ, cone.transform.position.y, | ||
| + | } | ||
| + | |||
| + | public void resetBall() | ||
| + | { | ||
| + | ball.transform.position = ballResetPosition.position; | ||
| + | |||
| + | //Stop Moving/ | ||
| + | ball.GetComponent< | ||
| + | |||
| + | //Stop rotating | ||
| + | ball.GetComponent< | ||
| + | |||
| + | createCone(); | ||
| + | } | ||
| + | |||
| + | public bool getFootBallStatus() | ||
| + | { | ||
| + | return ballDetected; | ||
| + | } | ||
| + | |||
| + | private List< | ||
| + | [Button] | ||
| + | public void createCone() | ||
| + | { | ||
| + | if (newItemList != null) | ||
| + | { | ||
| + | foreach (var item in newItemList) | ||
| + | { | ||
| + | Destroy(item); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | for (int i = 0; i < 6; i++) | ||
| + | { | ||
| + | Transform cone = coneGizmo.transform; | ||
| + | |||
| + | float randX = UnityEngine.Random.Range(-rangeX, | ||
| + | float randZ = UnityEngine.Random.Range(-rangeZ, | ||
| + | |||
| + | float x = cone.transform.position.x + (int)Math.Round((decimal)randX) / 2; | ||
| + | float z = cone.transform.position.z + (int)Math.Round((decimal)randZ) / 2; | ||
| + | |||
| + | var newPos = new Vector3(x, cone.transform.position.y, | ||
| + | |||
| + | var newItem = Instantiate(conePrefab, | ||
| + | newItem.transform.SetParent(cone); | ||
| + | newItem.transform.position = newPos; | ||
| + | |||
| + | newItemList.Add(newItem); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | } | ||
| - | {{ : | + | </ |