• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Unity. Tworzenie kola z kul.

0 głosów
101 wizyt
pytanie zadane 10 grudnia 2016 w C# i .NET przez gab123 Mądrala (5,240 p.)
edycja 10 grudnia 2016 przez gab123
Witam,

Tworze w unity taka prosta gre gdzie takie pileczki kreca sie w okol innej piłeczki, a ta je zbija.

Ilosc kuleczek które się kreca w okol piłeczki jest zalezna od levelu, odleglos pileczek od piłeczki która je zbija również.

I nie wiem jak to zrobić żeby na początku gry utworone piłeczki w kolko były równej odleglosci miedzy sobą.

Nie proszę o gotowe rozwiązanie, tylko o to byscie mnie pokierowali jak mniej więcej to zrobić.

Mam nadzieje ze mnie zrozumieliście.

Z góry dziekuje.

1 odpowiedź

0 głosów
odpowiedź 10 grudnia 2016 przez niezalogowany
wybrane 12 grudnia 2016 przez gab123
 
Najlepsza
Czyżby Ctrl + C, Ctrl + V, Ctrl + V?

Efekt którego potrzebujesz jest dość prosty dość zrobienia; to zadanie to nic innego jak stworzenie wielokąta foremnego. Ideę wyjaśniłem tutaj (tylko że dla ciebie R jest stałe): http://szymonsiarkiewicz.pl/algorytmy/generator-asteroido-podobnych-obiektow-2d-generator-wielokatow/
komentarz 10 grudnia 2016 przez gab123 Mądrala (5,240 p.)

Hej, napisalam cos takiego :

using UnityEngine;
using System.Collections;
using UnityEngine.UI ;

public class Circle : MonoBehaviour
{

	public GameObject player ;

	public GameObject enemie ;

	int n ;

	Vector3 s = new Vector3 (0, 0, 0);

	float R;

	bool isConvex ;

	Vector3[] x;

	void Start(){

		n =  4 +  player.GetComponent<PlayerController>().level ;

		R = player.GetComponent<PlayerController>().level + 4.2f ;

		x = new Vector3[n] ;
			
		Debug.Log (n);

		Debug.Log (x);

		int i = 0;

		float kat = 360/n ;

		float d = R ;

		while(i<n){
			if (isConvex == false)
				d = Random.Range (0, R);

			kat = Random.Range (0, kat) + i * kat;

			x[i] = s + new Vector3(Mathf.Cos(kat)*d,Mathf.Sin(kat),0);

				Instantiate (enemie, x[i], Quaternion.identity);

			i +=1 ;
		
	}

}

 

I wszystko okey, tylko utworzona figura nie ma ksztaltu kola ale ksztalt elipsy i do tego roznica miedzy poszczegolnymi "enemies" (pileczkami) Nie jest zawsze taka sama. Jak to naprawic ?

komentarz 11 grudnia 2016 przez niezalogowany
Zrozum sposób działania algorytmu, u Ciebie nie powinno być żadnych randomów
komentarz 11 grudnia 2016 przez gab123 Mądrala (5,240 p.)
Doszlam do tego ale usuniecie ich nic nie dalo.
komentarz 11 grudnia 2016 przez niezalogowany

U Ciebie to się sprowadza do wybrania n punktów na okręgu o promieniu r, pseudo Unity C#:

void Generate(Vector2 pos, int n, int r)
{
  float alpha = 360f / float(n);
  for(int i=0; i<n; ++i)
  {
    float phi = alpha + i * alpha;
    phi = Mathf.Deg2Rad(phi);
    x = pos.x + Mathf.cos(phi);
    y = pos.y + Mathf.sin(phi);
    Instatiate(prefab, new Vector3(x, y), Quaternion.identity);
  }
}

Pamiętaj że wpływ na ostateczny wygląd może mieć choćby sposób renderowania świata

komentarz 12 grudnia 2016 przez gab123 Mądrala (5,240 p.)
Dziękuje, teraz już widze gdzie zrobiłam błąd i wszystko mi działa jak należy.

Podobne pytania

0 głosów
2 odpowiedzi 114 wizyt
0 głosów
2 odpowiedzi 218 wizyt
+4 głosów
3 odpowiedzi 435 wizyt
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

64,791 zapytań

111,249 odpowiedzi

233,951 komentarzy

46,683 pasjonatów

Przeglądających: 192
Pasjonatów: 8 Gości: 184

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...