• 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
99 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 100 wizyt
0 głosów
2 odpowiedzi 181 wizyt
+4 głosów
3 odpowiedzi 405 wizyt
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

62,438 zapytań

108,589 odpowiedzi

226,699 komentarzy

35,996 pasjonatów

Przeglądających: 61
Pasjonatów: 5 Gości: 56

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.

...