Kannst du uns bitte ein paar mehr Informationen geben. Welche "Grafiken des Spiels" sind nicht an die Größe deines Smartphones angepasst? Was genau ist das Problem? :)

...zur Antwort

Heyho,

also ja hier sind auch einige anwesend die Ahnung von Unity haben ansonsten kann ich Stackoverflow jedem Entwickler empfehlen! Es gibt noch das deutsche Unity Insider Forum: https://forum.unity-community.de/

Kannst mich auch gerne bei Fragen kontaktieren, per Mail, Skype etc., hab zwar schon länger nichts mehr mit Unity gemacht, aber einiges weiß ich dann doch noch :D

Liebe Grüße

...zur Antwort

Letztendlich musst du die Funktion "ShowAd()" ja einfach nur alle 5 Minuten aufrufen. Es gibt viele Möglichkeiten das zu erreichen, z.B. folgende:

  1. Du kannst Coroutines dafür nutzen.
  2. Du kannst in der Update Funktion prüfen ob genügend Zeit verstrichen ist, in dem du die Zeit ausließt z.B. mit Time.time
  3. Oder du benutzt die InvokeRepeating Funktion,

Hier einmal ein Code-Beispiel zur 3. Möglichkeit

using UnityEngine.Advertisements;
using UnityEngine;

public class AdTrigger: MonoBehaviour {
  
 float startDelayInSeconds = 300;
 float delayInSeconds = 300;

 void Start {
  InvokeRepeating("ShowAd", startDelayInSeconds, delayInSeconds);
 }
 
 public void ShowAd() {
  if(Advertisement.IsReady()) {
   Advertisement.Show();
  }
 }
}

InvokeRepeating ruft nun die ShowAd() Funktion alle 300 Sekunden auf. startDelayInSeconds gibt an nach wie vielen Sekunden das erste mal Werbung angezeigt wird, "delayInSeconds" gibt an nach wie vielen Sekunden die Werbung erneut angezeigt werden soll.

Stoppen kannst du das ganze dann mit:

CancelInvoke("ShowAd");

LG Dosenbiiir

...zur Antwort

Ich würde dir eher Unity3D empfehlen. Unity ist sehr einsteigerfreundlich, aber auch für erfahrene Entwickler gut geeignet. Es gibt sehr sehr viele Tutorials im Internet, die Community von Unity ist einfach riesig. Ich denke deine Erfolgschancen mit Unity ein eigenes Spiel zu programmieren/entwickeln sind höher als wenn du dich jetzt direkt an der z.B. Unreal Engine versuchst.

Die kostenlose Variante von Unity beinhaltet schon alle wichtigen Features der Engine also schau sie dir einfach mal an. Sobald du mehr als ich glaube derzeit 200.000 Dollar in einem Geschäftsjahr verdienst musst du auf die Plus/Pro Variante umsteigen, aber das sollte dann wohl kein Problem mehr sein :D

Gerade für 2D Spiele würde ich dir Unity empfehlen, da die Engine für den 2D Bereich enorm verbessert und ausgebaut wurde und du kannst gerade am Anfang mit den zur Verfügung gestellten Scripts usw. gute Resultate erzielen.

Anonsten ist die Unreal Engine auch sehr beliebt, gerade weil sie den Ruf hat eine sehr gute Grafik zu ermöglichen. So wie ich es mitbekommen habe und auch selber erlebt habe, ist die Unreal Engine jedoch eher für etwas größere Teams geeignet und Unity besser für einzelne Personen und kleinere Teams. Dass hat den Hintergrund, dass Unity einem unter anderem Dinge abnimmt die in der Unreal Engine selber gemacht werden müssen oder aufwendiger sind. Aber die Engines entwickeln sich ja auch immer weiter ;)

Wie dem auch sei, letzendlich sind beide Engines super. Am allerwichtigsten ist, dass du mit der Engine gut klar kommst. Meistens bist du nicht durch die Engine begrentzt sondern durch die nötigen Kenntnisse diese gut zu bedienen.Um gute Resultate zu erzielen ist es also wichtig, dass du weißt wie du die Features der Engine nutzt, und da sehe ich Vorteile für Unity :)

PS: Natürlich gibt es auch noch andere Möglichkeiten als auf eine Engine zu setzen, darauf gehe ich jetzt aber nicht genauer ein. Was die Spiele-Entwicklung angeht denke ich ist es meistens Sinnvoll auf eine Engine zu setzen. Ebenfalls sei erwähnt, dass es noch weitere Engines gibt.

Liebe Grüße,

Dosenbiiir

...zur Antwort

Heyho,

ich bin mir nicht ganz sicher ob du wirklich eine Formel für dein Vorhaben benötigst. Der Rigidbody2D ist ja bereits mit physikalischen Eigenschaften ausgestattet. Du kannst dem Rigidbody eine Kraft ausüben, welche abhängig von der Rotationsrichtung wirkt.

Folgendes Skript schiebt die Rakete in Rotationsrichtung an:

using UnityEngine;

public class Antrieb: MonoBehaviour
{
    public float schub;
    public Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void FixedUpdate()
    {
        rb.AddForce(transform.up * schub);
    }
}

Für Spiele lassen sich darüber meist bessere Ergebnisse erzielen als mit physikalischen Formeln zu hantieren (hängt aber natürlich vom Spiel ab).

Du kannst auch direkt auf die velocity des Rigidbody's zugreifen, siehe: https://docs.unity3d.com/ScriptReference/Rigidbody2D-velocity.html

Auf der Seite ist leider kein Beispielcode, jedoch gibt's welchen für den normalen Rigidbody (3D), lässt sich schnell für den 2D Rigidbody anpassen: https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html

LG

...zur Antwort

Unity bietet da, soweit ich weiß, leider nichts direkt an. Es gibt jedoch Assets im Asset Store.

Entweder du bearbeitest die Terrains einzeln und benutzt dann den Terrain-Stitcher um die Kanten zusammenzufügen. Könnte mir aber vorstellen, dass das etwas umständlich mit den Texturen wird (die Ränder passend zu bemalen) und auch etwas lästig immer zwischen den Terrains zu wechseln etc.

Das Tool kostet aktuell 5 Dollar: https://assetstore.unity.com/packages/tools/terrain/terrain-stitcher-42671

Wenn du jedoch mehrere Terrains gleichzeitig bearbeiten möchtest, kann ich dir folgendes Tool empfehlen: https://assetstore.unity.com/packages/tools/terrain/multiple-terrain-brush-2-0-44037

Das Multiple Terrain Brush Tool ist mit aktuell 25 Dollar etwas teurer, damit kannst du dann aber alles machen. Du kannst mit nem Pinsel die Ränder zusammenfügen, mehrere Terrains gleichzeitig bearbeiten (als wäre es quasi ein großes), also auch Texturen malen.

Ansonsten kannst du dir natürlich auch ein eigenes Skript schreiben, das wäre dann die aufwendigste Variante :)

PS: Eventuell findest du im Asset Store noch weitere Tools, das sind jetzt nur die beiden die ich kenne.

LG Dosenbiiir

...zur Antwort

Wähle mal ein Objekt in der Szene aus und drücke die F Taste auf der Tastatur. Vielleicht normalisiert sich die Geschwindigkeit dann wieder :)

...zur Antwort

Ja an sich ist das möglich, ob und wie viel du verändern musst damit dein Spiel wieder läuft hängt stark davon ab von welcher Version du auf welche upgradest. Da Unity stetig weiter entwickelt wird werden alte Funktionen entfernt und durch neue ersetzt. Je nach Alter und Größe deines Projektes wird es dich einige Stunden bis Tage kosten alles anzupassen. Im Zweifelsfall einfach mal ausprobieren (Achtung vorher ein Backup/Kopie des Projektes machen!).

Ich schätze mal du wirst einiges an Code ändern müssen um veraltete Methoden zu ersetzen. Ebenfalls kannst du z.B. Probleme mit dem Lightning bekommen da hat sich auch einiges geändert. Grundsätzlich mit allem was sich im Laufe der Zeit verändert hat.

Es hängt also stark von deinem Projekt ab (welche Features du verwendet hast). Networking, veraltete Assets etc.

...zur Antwort

Also, eigentlich kann man den Großteil deiner Fragen nicht wirklich beantworten.

Zu aller erst, ich empfehle es euch nicht ein Spiel oder auch allgemein Projekte hauptsächlich wegen des Geldes zu machen. Klar ist es schön am Ende der ganzen Arbeit auch etwas Geld damit zu verdienen was oftmals aufgrund von laufenden kosten auch notwendig ist. Dennoch solltet ihr das Projekt machen weil ihr Spaß daran habt. Dann habt ihr auch ausreichend Motivation und eure App wird deutlich besser werden wenn ihr wirklich dahinter steht. (Ich möchte euch an der Stelle auch gar nichts vorwerfen, kommt nur sehr stark so rüber :))

Zu der Frage ob "Android-Studio ein solides Programm" ist. Android Studio basiert auf Intellij womit ich gerne arbeite und Android Studio ist die offizielle IDE für Android Entwicklung. Wenn ihr Spiele Apps entwickeln wollt, kann ich euch aber eher empfehlen eine Game-Engine zu benutzen. Ich empfehle euch da Unity3D.

Zu deiner Frage wie viel Umsatz und Gewinn ihr mit der App machen könnt, können wir dir auch nicht viel sagen. Wie viel Geld ihr verdienen werdet hängt sehr stark davon ab wie oft eure App gekauft wird und das weiß keiner von uns :) Ich kann euch nur abraten eine App zu verkaufen und dann noch Werbung zu schalten. Das ist für mich und viele weitere Handy Nutzer ein absolutes no go! Wenn könntet ihr eine kostenlose Variante mit Werbung anbieten und eine kostenpflichtige ohne Werbung mit noch ein paar extra Levels oder ähnliches.

Zu den Gebühren, eine App im Play Store hochzuladen ist kostenfrei, jedoch kostet die Anmeldung als Entwickler einmalig (aktuell) 25 Dollar. Desweiteren bekommt Google einen gewissen Prozent Satz von euren Verkaufserlösen ab (weiß ich grad auch nicht wie viel Prozent das genau sind).

Wie hoch eure weiteren kosten sind hängt von euer App ab. Braucht ihr einen Server, Programme, Modelle, etc.

Zu Frage 6. Klar schafft man es. Die Frage ist nur ob ihr es schafft. Und auch die Frage kann man euch nicht beantworten, da wir nicht wissen was für eine App ihr entwickeln wollt, wie viel Erfahrung ihr schon habt und wie viel Zeit ihr investieren wollt.

Wenn ihr nicht hohe kosten für Lizenzen, Server usw. erwartet, dann solltet ihr euch nicht zu viele Gedanken darüber machen wie viel Geld ihr verdienen werdet sondern einfach euer Projekt anfangen und eure Ideen umsetzen.

LG

...zur Antwort

Heyho,

Also wie du das machst, dass sich das ganze physikalisch korrekt bewegt weiß ich so ehrlich gesagt auch nicht (aber letztendlich schwingt die Gondel in der Realität ja auch nicht frei (und wenn nur zum Teil), die Bewegungen sind ja in der Regel so gewollt. Daher fällt mir nur ein als Alternative die Bewegungen der beiden Elemente selber zu animieren. Entweder in einem 3D-Programm oder direkt in Unity (oben auf "Window" -> "Animation")

Viel Erfolg :)

LG Dosenbiiir

...zur Antwort

Uff, ich kann mich jetzt gar nicht mehr an meine Registrierung erinnern (zu lange her). Könnte es sein, dass du deine Email erst verifizieren musst? Hast du mal in deine Emails gecheckt ob du eine Email von Unity bekommen hast in der du einen Link anklicken sollst (zum abschließen der Registrierung).

Ansonsten ändere mal das Passwort und versuche es erneut. Ebenfalls solltest du überprüfen ,ob du dir auch wirklich einen Account erstellt hast (im Zweifelsfall versuch mal einen Account mit der selben Email zu erstellen, wenn das geht gabs wohl ein Fehler bei der Registrierung).

Viel Glück :)

...zur Antwort

Ich weiß ja nicht ob du es schon selber rausgefunden hast, aber die Distance berechnest du mit

Vector3.Distance(transform1, transform2);

siehe hier: https://docs.unity3d.com/ScriptReference/Vector3.Distance.html

Damit 2 Objekte in Unity miteinander kollidieren, müssen beide einen Collider haben. Füg also beiden Objekten einen Collider hinzu. Dann kannst du per Code die Methode OnCollisionEnter() benutzen, welche aufgerufen wird sobald dein Objekt (bzw. der Collider) ein anderes berührt. (Achtung: mindestens eines der beiden Objekte muss auch ein Rigidbody-Component haben)

void OnCollisionEnter(Collision collision)
{
//ein Objekt wurde berührt ...

}

siehe hier: https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html

Lg Dosenbiiir

...zur Antwort

Hey, wie immer gibts da viele Möglichkeiten.

Du könntest mit Collidern und der OnTriggerStay Methode arbeiten. Das ist eine Methode die nur aufgerufen wird, wenn sich dein Objekt (bzw. dessen Collider) in einem anderen Collider befindet. In der Methode machst du dann deine Abfrage ob der Spieler die W-Taste drückt. Siehe hier: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html

2. Variante wäre, wie du bereits gesagt hast, die Distanz abzufragen. Das geht mit Vector3.Distance. Siehe hier: https://docs.unity3d.com/ScriptReference/Vector3.Distance.html

Der Code dazu würde in C# etwa so aussehen:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SceneChange : MonoBehaviour
{

[SerializeField] float minSceneChangeDistance = 1;
[SerializeField] Transform sceneChangeTransform;

void Update()
{
if (Input.GetKeyDown(KeyCode.W) && Vector3.Distance(transform.position, sceneChangeTransform.position) <= minSceneChangeDistance)
{
//Lade eine neue Scene oder Teleportiere den spieler...

}
}
}

Liebe Grüße,

Dosenbiiir

...zur Antwort

Nein es ist nicht möglich und auch nicht wirklich Sinnvoll. Du wirst dich extrem schnell darin zurecht finden glaube mir ;) Game Development (generell Informatik) ist eben ein sehr stark Englisch lastiger Bereich, ein Wunder das Teile der Website auf deutsch übersetzt wurden. Das war bis vor einigen Wochen noch nicht der Fall ;)
Die deutsch sprachige Community ist schon sehr groß, du wirst dennoch immer wieder auf englische tutorials, Foren usw. vorbeischauen und da ist es sogar nützlich wenn du gleich die englischen Begriffe kannst und nicht alles übersetzen musst.
Ich hatte mir damals auch unbedingt eine deutsch sprachige Version gewünscht und bin nun froh dass es diese nicht gab :)  Auch wenns am Anfang etwas mehr Aufwand ist sich zurecht zu finden, grad eben als Anfänger, am Ende profitiert du davon. 

Die programmier Sprache (C#) ist auch auf englisch und wenn du dann die Elemente der Engine benutzten willst im Code müsstest du immer wieder zwischen den englischen und deutschen Begriffen wechseln das wäre extrem umständlich. So siehst du in der Oberfläche in Unity direkt wie die Komponente heißt und kannst sie per Code ansteuern.

Also da es nach meines Wissens keine deutsche Version gibt (zumindestens noch nicht und ich bezweifle das eine kommen wird) versuch das beste draus zu machen ;)

Liebe Grüße

...zur Antwort

Der 2. Error ist normal. Das passiert wenn du Scripts änderst während deine Multiplayer Scene läuft. Der Network Manager wechselt dann Automatisch zurück in die "Offline Scene".

Der erste Fehler sieht mir nach einem Bug/Fehler der Engine aus. Am besten du installierst Unity neu. Sieht so aus als würde ein Fehler in der DLL sein.

...zur Antwort