using UnityEngine;
public class ObjectSpawner : MonoBehaviour
{
public GameObject firstObjectPrefab;
public GameObject secondObjectPrefab;
public GameObject thirdObjectPrefab;
public GameObject bombObjectPrefab;
private Vector2 firstPos;
private Vector2 secondPos;
private Vector2 thirdPos;
private Vector2 bombPos;
private void Start()
{
SpawnObjects();
}
private void SpawnObjects()
{
bool validPositions = false;
while (!validPositions)
{
// Generate random positions for all objects
float angle = Random.Range(0f, Mathf.PI * 2f);
float distanceFromCenter = Random.Range(0f, 200f);
firstPos = new Vector2(Mathf.Cos(angle) * distanceFromCenter, Mathf.Sin(angle) * distanceFromCenter);
angle = Random.Range(0f, Mathf.PI * 2f);
distanceFromCenter = Random.Range(0f, 200f);
secondPos = new Vector2(Mathf.Cos(angle) * distanceFromCenter, Mathf.Sin(angle) * distanceFromCenter);
angle = Random.Range(0f, Mathf.PI * 2f);
distanceFromCenter = Random.Range(0f, 200f);
thirdPos = new Vector2(Mathf.Cos(angle) * distanceFromCenter, Mathf.Sin(angle) * distanceFromCenter);
angle = Random.Range(0f, Mathf.PI * 2f);
distanceFromCenter = Random.Range(0f, 256f);
bombPos = new Vector2(Mathf.Cos(angle) * distanceFromCenter, Mathf.Sin(angle) * distanceFromCenter);
// Check if all positions are valid
if (Vector2.Distance(firstPos, secondPos) >= 200f &&
Vector2.Distance(secondPos, thirdPos) >= 200f &&
Vector2.Distance(thirdPos, firstPos) >= 200f &&
Vector2.Distance(firstPos, bombPos) >= 256f &&
Vector2.Distance(secondPos, bombPos) >= 256f &&
Vector2.Distance(thirdPos, bombPos) >= 256f)
{
validPositions = true;
}
}
// Spawn objects at the generated positions
Instantiate(firstObjectPrefab, firstPos, Quaternion.identity);
Instantiate(secondObjectPrefab, secondPos, Quaternion.identity);
Instantiate(thirdObjectPrefab, thirdPos, Quaternion.identity);
Instantiate(bombObjectPrefab, bombPos, Quaternion.identity);
}
}
rayShootPos = playerObject.transform.position - transform.position;
hitShoot = Physics2D.Raycast(transform.position, rayShootPos, shootDistance);
if (hitShoot.collider != null)
{
Debug.Log(hitShoot.collider.gameObject.name);
if (hitShoot.collider.gameObject.name == "Player")
{
Debug.Log("Player Dead!");
needToShoot = true;
}
else
{
needToShoot = false;
}
}
else
{
needToShoot = false;
}
float moveInputY = Input.GetAxis("Vertical");
if (moveInputY > 0)
{
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 newPos = Vector2.MoveTowards(rigidbody2D.position, mousePosition, Time.fixedDeltaTime * shipSpeed);
rigidbody2D.MovePosition(newPos);
}
private IEnumerator SpawnPoints()
{
while(true)
{
float randomX = Random.Range(leftDown.position.x, rightDown.position.x);
float randomY = Random.Range(leftDown.position.y, leftUP.position.y);
Instantiate(prefab, new Vector3(randomX, randomY, 0), Quaternion.identity);
yield return new WaitForSeconds(1f);
}
}
private void Update()
{
rigidbody2D.velocity = new Vector2(speed, rigidbody2D.velocity.y);
if (leftPos != leftBttn.transform.position.y)
{
//rigidbody2D.velocity = new Vector2(speed, rigidbody2D.velocity.y);
speed = -5f;
}
else if (rightPos != rightBttn.transform.position.y)
{
speed = 5f;
}
else
{
speed = 0f;
}
rigidbody2D.velocity = new Vector2(speed, rigidbody2D.velocity.y);
}
private void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.CompareTag("Shop") && gameObject.name == works.ci.ToString())
{
allVariables.money += 5;
works.howMuchEarn += 5;
works.textMoneyCourierEarn.text = "Заработано - " + works.howMuchEarn;
Destroy(gameObject);
}
}