You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.7 KiB
C#
66 lines
1.7 KiB
C#
6 months ago
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
|
||
|
public class BowlingManager : MonoBehaviour
|
||
|
{
|
||
|
[Header("Bowling Ball Settings")]
|
||
|
public GameObject bowlingBall;
|
||
|
|
||
|
[Header("Bowling Pin Settings")]
|
||
|
public Vector3 pinCenter;
|
||
|
public float pinSpaceX;
|
||
|
public float pinSpaceZ;
|
||
|
|
||
|
public List<GameObject> pins = new List<GameObject>();
|
||
|
|
||
|
public Vector3 ballPosition;
|
||
|
private void Start()
|
||
|
{
|
||
|
ballPosition = bowlingBall.transform.position;
|
||
|
ResetPins();
|
||
|
}
|
||
|
|
||
|
public void ResetBall()
|
||
|
{
|
||
|
bowlingBall.GetComponent<Rigidbody>().isKinematic = true;
|
||
|
bowlingBall.transform.position = ballPosition;
|
||
|
bowlingBall.GetComponent<Rigidbody>().isKinematic = false;
|
||
|
}
|
||
|
|
||
|
public void ResetPins()
|
||
|
{
|
||
|
int max = (pins.Count / 2) - 2;
|
||
|
int topRow = (pins.Count / 2) - 2; ;
|
||
|
int row = 0;
|
||
|
|
||
|
float currentX = pinCenter.x;
|
||
|
float currentZ = pinCenter.z;
|
||
|
|
||
|
for (int i = 0; i < pins.Count; i++)
|
||
|
{
|
||
|
pins[i].GetComponent<Rigidbody>().isKinematic = true;
|
||
|
|
||
|
pins[i].transform.rotation = Quaternion.Euler(0, 0, 0);
|
||
|
pins[i].transform.position = new Vector3(currentX, pinCenter.y, currentZ);
|
||
|
|
||
|
pins[i].GetComponent<Rigidbody>().isKinematic = false;
|
||
|
|
||
|
currentZ += pinSpaceZ;
|
||
|
|
||
|
if (row == topRow)
|
||
|
{
|
||
|
topRow--;
|
||
|
row = 0;
|
||
|
|
||
|
currentZ = pinCenter.z + ((pinSpaceZ / 2) * (max - topRow));
|
||
|
currentX = pinCenter.x + (pinSpaceX * (max - topRow));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
row++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|