Jump to content
Unity Insider Forum

Kojote

Members
  • Gesamte Inhalte

    1.475
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    10

Alle erstellten Inhalte von Kojote

  1. Kojote

    Objekt bewegen

    Grüße! OK jetzt wirds peinlich! Ich will ein Objekt bewegen aber es bewegt sich aus irgend einem Grund nicht. Hier mal der Script: [Header("Kamera")] public Camera kamera; private void Awake() { kamera = Camera.main; kameraPosition = kamera.transform.position; kameraZielPosition = new Vector3(kameraPosition.x, kameraPosition.y, kameraPosition.z + 5); kamerafahrt = true; } private void Update() { if (kamerafahrt == true) { kameraPosition = kameraPosition + transform.forward * 5 * Time.deltaTime; Debug.Log(kameraPosition); } } So einfach wie simpel, aber es funktioniert nicht. Das komische ist nun, über den Debug lasse ich mir die Position ausgeben und der Debug gibt mir an, dass sich das Objekt auf der Z-Achse bewegt, tut es aber nicht in der SceneView und auch nicht im GameView. Es gibt auch nur eine Main Camera. Selbst wenn ich das Objekt nicht finden lasse, sondern im Inspector direkt zuweise funktioniert es nicht. Habt ihr ne Ahnung was hier nicht stimmt? EDIT: Ähmmm warum funktioniert Zeile 1 nicht aber Zeile 2? GameObject kamera; kameraPosition = kameraPosition + transform.forward * 5 * Time.deltaTime; kamera.transform.position = kamera.transform.position + transform.forward * 5 * Time.deltaTime; EDIT 2: Äpfel und Birnen bzw. Vector3 und Transform durcheinander gehaun, jetzt gehts. Kojote
  2. Willkommen! Dann schließe ich mich malzbie mal an, hier bist du genau richtig, fachgesimpelt wird hier doch immer gern. Fühl dich wohl und wie zu Hause!
  3. Es wird dir unten, wenn du einen Beitrag schreibst angezeigt wie viel du noch an Speicherplatz übrig hast. Jap, leider musst du was löschen um wieder Bilder hier hochladen zu können. Alternativ extern hosten.
  4. Denke mal dir gehts wie mir, der 10 MB Anhangscount ist voll.^^ Sieht übrigens Hammer aus! Vor allem der Fighter gefällt mir!
  5. Schau mal unter: EDIT -> PREFERENCE Da solltest du fündig werden unter EXTERNAL TOOLS. Hier mal ein Bild zu, hier musst du SDK und Co eintragen, sonst findet es Unity nicht: http://docs.huihoo.com/unity/5.4/Documentation/en/Manual/Preferences.html
  6. Richtig toll, ich bin begeistert!
  7. VERGESST EXTREMSPORTARTEN

    Der neue Nervenkitzel heißt:

    ABENTEUER INSTALLATION

    Teste auch du dich an der Installation von MySQL und erlebe Nervenkitzel pur! Nur ein falscher Klick und alles kann vorbei sein!

    Nichts für schwache Nerven! B)

    1. Vorherige Kommentare anzeigen  %s mehr
    2. Felix K.

      Felix K.

      PostgreSQL ist auch ein schönes DBMS. Der neue PgAdmin4 ist zwar noch bissl zäh, aber es geht.

    3. Kojote

      Kojote

      Lustig, alle sagen mir das ich lieber was anderes als ODBC nehmen soll. :lol:

    4. Tiwaz

      Tiwaz

      Naja es macht natürlich immer einen riesen Unterschied wofür man etwas benutzt und auch in welchem Rahmen.. In einem Multi-Standort Unternehmen mit mehreren hundert/tausend Mitarbeitern wird man zu 99% andere Software einsetzen als ich wenn ich alleine an einem Game Projekt arbeite, vor allem wenn das Unternehmen bereits Produkte vertreibt und/oder sich an Richtlinien oder gesetzliche Vorgaben halten muss ^^

      Und ich bin eben davon ausgegangen, dass es für ein privates Projekt mit Unity sein wird :)

  8. Kojote

    Suche Menü

    Grüße! Ich lese mir gerade ein Tutorial durch bezüglich Speedtree: http://www.procedural-worlds.com/gaia/tutorials/optimising-speedtree-with-gpu-instancing-in-unity-55/ Sagt mal, wo finde ich dieses Menü, ich finds einfach nicht: Grüße von Kojote
  9. Grüß Euch! Ich bastel gerade wieder mal an meinem Terrain herum und habe ein recht skurriles Problem. So sehet Bild 1 und Bild 2. So, der Unterschied, wie auf Bild 1 sehen alle meine Bäume aus, die Äste fügen sich nicht in den Stamm ein. Bild 2 - ich habe den Baum nur im Tree Generator geladen und auf das Stamm Icon geklickt. Unterschied ist, der Baum wird etwas dunkler gerendert und die Äste sind da wo sie hin sollen. Könnt ihr euch darauf einen Reim machen? Kojote
  10. Gern geschehn, meine Frau bewertet die Tage auch noch!
  11. Hab ich mich schon drauf gefreut, meine!
  12. Grüße! Hier mal ein kleines Snippet, wie man Objekte im Spiel ein und ausblenden kann. Dies funktioniert über den Standard-Shader. Im Standard-Shader finden wir folgenden Code, den wir brauchen um im Material die Rendering Methode auf "Fade" zu stellen, damit eine Änderung des Alpha-Wertes möglich ist. public static void SetupMaterialWithBlendMode(Material material, BlendMode blendMode) { switch (blendMode) { case BlendMode.Opaque: material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); material.SetInt("_ZWrite", 1); material.DisableKeyword("_ALPHATEST_ON"); material.DisableKeyword("_ALPHABLEND_ON"); material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); material.renderQueue = -1; break; case BlendMode.Cutout: material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); material.SetInt("_ZWrite", 1); material.EnableKeyword("_ALPHATEST_ON"); material.DisableKeyword("_ALPHABLEND_ON"); material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); material.renderQueue = 2450; break; case BlendMode.Fade: material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); material.SetInt("_ZWrite", 0); material.DisableKeyword("_ALPHATEST_ON"); material.EnableKeyword("_ALPHABLEND_ON"); material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); material.renderQueue = 3000; break; case BlendMode.Transparent: material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); material.SetInt("_ZWrite", 0); material.DisableKeyword("_ALPHATEST_ON"); material.DisableKeyword("_ALPHABLEND_ON"); material.EnableKeyword("_ALPHAPREMULTIPLY_ON"); material.renderQueue = 3000; break; } } Kommen wir nuzn zum Code! Initialisierung: SkinnedMeshRenderer smr = this.gameObject.GetComponentInChildren<SkinnedMeshRenderer>(); Material material = smr.material; Color32 col = material.GetColor("_Color"); Methoden zum Wechseln des Rendering Mode: private void WechselMaterialStandard() { material.SetFloat("_Mode", 0); material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero); material.SetInt("_ZWrite", 1); material.DisableKeyword("_ALPHATEST_ON"); material.DisableKeyword("_ALPHABLEND_ON"); material.EnableKeyword("_ALPHAPREMULTIPLY_ON"); material.renderQueue = -1; } private void WechselMaterialFade() { material.SetFloat("_Mode", 2); material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One); material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha); material.SetInt("_ZWrite", 0); material.DisableKeyword("_ALPHATEST_ON"); material.DisableKeyword("_ALPHABLEND_ON"); material.EnableKeyword("_ALPHAPREMULTIPLY_ON"); material.renderQueue = 3000; } Ein- und ausblenden kann man nun zum Beispiel in eine Corouine regeln: private IEnumerator Coroutine() { WechselMaterialFade(); while (col.a >= 10) { col.a -= 10; material.SetColor("_Color", col); yield return new WaitForFixedUpdate(); } col.a = 0; } Möchte man wieder alles sofort zurück setzen: WechselMaterialStandard(); col.a = 255; material.SetColor("_Color", col); Kojote
  13. Kojote

    Screenshot Snippet

    Grüße! Hier mal ein kleines Screenshot-Snippet für Unity 2017. Viel Spaß damit! using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; public class Screenshots : MonoBehaviour { private Canvas canvas; public KeyCode screenshotKey = KeyCode.F8; // Auswahl Key-Taste für Screenshot public string gamename = "Gamename"; // Name des Spiels private string path; public bool canvasShow = false; // Screenshots mit oder ohne GUI private void Awake() { canvas = GameObject.Find("Canvas").GetComponent<Canvas>(); path = Application.dataPath + "/Screenshots"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } } private void LateUpdate() { if (Input.GetKeyDown(screenshotKey)) { StartCoroutine(RecordFrame()); } } IEnumerator RecordFrame() { if(!canvasShow) canvas.enabled = false; string time = System.DateTime.Now.ToString("dd-MM-yyyy_HH-mm-ss"); yield return new WaitForEndOfFrame(); ScreenCapture.CaptureScreenshot(path + "/" + name + "_" + time + ".png", 0); if (!canvasShow) canvas.enabled = true; yield return new WaitForSeconds(1.0f); } } Kojote
  14. Kojote

    Steuerungs Licht

    Grüße! Ich habe mir für einen Feuerball ein kleines Stück Code geschrieben, dass ein Area Light Steuern soll. Um so größere die Flamme wird, um so größer soll das Licht werden. Umgekehrt das selbe. Mein Problem ist nun, dass das Objekt, welches den Feuerball machen kann, vom Spieler aktiviert und deaktiviert werden kann (Inspector oben links). Es ist also nicht sichergestellt, dass die gesamte Animation abgespielt wird. Beim Neustart soll wie der Feuerball auch, das Licht natürlich auch wieder von 0 anfangen und größer werden müssen. Problem ist, sowohl Awake und Start werden nur einmal im Leben dieses Objekts gestartet und somit funktioniert mein zurücksetzen im Start natürlcih nicht wie geplant. Könne nun eine Neustartmethode schreiben, die ich über den Spielercharakter anspreche, wollte mir aber ehrlich gesagt unnötige Sctiptübergriffe sparen, da es sonst bald unübersichtlich sein wird. Gibt es denn noch eine Möglichkeit etwas zu starten, wenn das Objekt reaktiviert wird? Also noch was außer Awake und Start? public class Area_Light_Verbrennen : MonoBehaviour { private Light licht; public float geschwindigkeitEinUndAusBlenden = 0.06f; public float lichtWartezeit = 1.9f; public float lichtReichweite = 4.5f; private bool lichtUmkehren; private bool lichtEin; private void Awake () { licht = this.gameObject.GetComponent<Light>(); } private void Start() { lichtUmkehren = false; lichtEin = true; licht.range = 0.5f; StartCoroutine("LichtSteuern"); } private IEnumerator LichtSteuern() { while (lichtEin) { if (!lichtUmkehren) { licht.range += geschwindigkeitEinUndAusBlenden; yield return new WaitForFixedUpdate(); if (licht.range >= lichtReichweite) { yield return new WaitForSeconds(lichtWartezeit); lichtUmkehren = true; } } else { licht.range -= geschwindigkeitEinUndAusBlenden; yield return new WaitForFixedUpdate(); if (licht.range <= 0) { lichtEin = false; } } } } } EDIT: Hab doch noch was passendes gefunden: MonoBehaviour.OnEnable()
  15. Willkommen und viel Spaß hier!
  16. Kojote

    Struct Hilfe

    Grüße! Ich wollte mir es etwas einfacher machen und eine Struct nutzen. Problem ist, "drehfelder" werden in Unity nicht angezeigt, obwohl sie public sind. Habt ihr eine Ahnung was da falsch ist: using System.Collections; using System.Collections.Generic; using UnityEngine; public struct Drehfelder { public GameObject drehfeld; public Quaternion startRotation; public Quaternion zielRotation; public enum richtung : short { Unbekannt, Positiv_X, Positiv_Z, Negativ_X, Negativ_Z } public richtung zielTeleporterRichtung; } public class Drehfeldsteuerung : MonoBehaviour { public Drehfelder[] drehfelder; private void Start() { } }
  17. Kojote

    Tranform

    Grüße! Ich habe gerade ein kleines Problem mit meiner Spielfläche. Jede Spielfläche hat die Y-Koordinate 0. Der Charakter hat jedoch die Y-Koordinate 1. Problem ist nun, wenn ich abfrage ob beide Tranform-Positionen überein stimmen, ist es standardmässig falsch. Weil die Y-Koordinate ja unterschiedlich ist. Möglichkeit wäre nun, im Script ständig das Y gegen zu rechnen, was aber das Script recht umfangreich aufbläht und alles unübersichtlich macht. Das Objekt hat ja immer in der Mitte seinen Objekt-Achse. Kann man diese auf den Boden setzen? Kojote EDIT: Hat sich geklärt, hatte einen Denkfehler!
  18. Also wenn ich es richtig verstehe, möchtest du, dass, wenn ein Button geklickt wird, der Scroll-View an die Position des Bildes springt? Wenn ja, musst du einfach das Rect mit "verticalNormalizedPosition" bewegen. Je nach Button musst du dann einfach sagen, wohin das Rect springen soll. Hab ich zum Beispiel bei mir in den Datenschutzbestimmungen genutzt und würde so aussehen: rectDatenschutz.verticalNormalizedPosition = 1f; Du müsstest dann halt nur eine Methode pro Button machen oder eben Parameter übergeben: public void button_1() { rect.verticalNormalizedPosition = 1f; } public void button_2() { rect.verticalNormalizedPosition = 50f; } public void button_3() { rect.verticalNormalizedPosition = 100f; } public void button_4() { rect.verticalNormalizedPosition = 150f; } public void button_5() { rect.verticalNormalizedPosition = 200f; } oder halt public void button(int wert) { switch(wert) case 1: rect.verticalNormalizedPosition = 50f; break; case 2: rect.verticalNormalizedPosition = 100f; break; //ect. } Hier mal zum nachlesen.
  19. Grüße! Mal eine Frage zum Speicherplatzverbrauch von Unity. Ich zieh mir jeden Tag mindestens ein Backup. Was mich gerad etwas wundert. Von Tag zu Tag wird das Backup immer größer, jedoch kommen kaum neue Daten hinzu. Am Anfang war mein Backup mal 7 GB groß, jetzt 15 GB. Auch die Elemente in den Ordnern werden immer mehr und mehr. Habt ihr da eine Idee? Kojote EDIT: Hat sich geklärt, viel mir gerade noch ein, der Cache ...
  20. Fehler gefunden, ist ein Bug in Unity. Es werden beim Import nicht immer alle Dateien importiert. Recht einfache Lösung: 1. Neues Projekt aufmachen und in Services "Analytics" und "In-App Purchasing" aktivieren. 2. In "In-App Purchasing" auf Import klicken. 3. Es wird unter "Assets" ein neuer Ordner angelegt, dieser heißt "Plugin", in ihm werden zwei Ordner erzeugt "UnityChannel" und "UnityPurchasing" 4. Unity Beenden, Windows Explorer öffnen, die Ordner "UnityChannel" und "UnityPurchasing" aus dem neuen Projekt kopieren und an der selben Stelle im eigenen Projekt einfügen. Dabei alle Dateien und Ordner von "UnityChannel" und "UnityPurchasing" überschreiben. Fertig und weiterhin viel Spaß!
  21. Grüße! Ich bräuchte mal wieder etwas Hilfe von Euch. Ich versuche gerade einen Ingame- Hsop in meine App zu integrieren, halte mich an diese Anleitung: https://unity3d.com/de/learn/tutorials/topics/ads-analytics/integrating-unity-iap-your-game Habe auch den Code übernommen der dazu ist, jedoch habe ich eine Fehlermeldung, in dieser Zeile: var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); Das wäre mein Code: using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Purchasing; public class Shop : MonoBehaviour, IStoreListener { public Hauptmenue_Steuerung hauptmenueSteuerung; public Werbung_Hauptmenue werbungHauptmenue; private static IStoreController m_StoreController; private static IExtensionProvider m_StoreExtensionProvider; public static string kProductIDFreischaltungWerbung = "werbung"; // Apple App Store-specific product identifier for the subscription product. private static string kProductNameAppleSubscription = "com.unity3d.subscription.new"; // Google Play Store-specific product identifier subscription product. private static string kProductNameGooglePlaySubscription = "com.unity3d.subscription.original"; void Start() { // If we haven't set up the Unity Purchasing reference if (m_StoreController == null) { // Begin to configure our connection to Purchasing InitializePurchasing(); } if(IsInitialized()) { // Reaktivierung von Käufen Product product = m_StoreController.products.WithID(kProductIDFreischaltungWerbung); if (product != null && product.hasReceipt) { hexHauptmenueSteuerung.buttonKaufWerbung.SetActive(false); HEX_Werbung_Hauptmenue.werbungAktiv = 0; PlayerPrefs.GetInt("WerbungAktiv", 0); PlayerPrefs.Save(); } } } public void InitializePurchasing() { if (IsInitialized()) { return; } var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); builder.AddProduct(kProductIDFreischaltungWerbung, ProductType.NonConsumable); UnityPurchasing.Initialize(this, builder); } private bool IsInitialized() { return m_StoreController != null && m_StoreExtensionProvider != null; } public void KaufFreischaltungWerbung() { BuyProductID(kProductIDFreischaltungWerbung); } void BuyProductID(string productId) { // If Purchasing has been initialized ... if (IsInitialized()) { // ... look up the Product reference with the general product identifier and the Purchasing // system's products collection. Product product = m_StoreController.products.WithID(productId); // If the look up found a product for this device's store and that product is ready to be sold ... if (product != null && product.availableToPurchase) { Debug.Log(string.Format("Purchasing product asychronously: '{0}'", product.definition.id)); // ... buy the product. Expect a response either through ProcessPurchase or OnPurchaseFailed // asynchronously. m_StoreController.InitiatePurchase(product); } // Otherwise ... else { // ... report the product look-up failure situation Debug.Log("BuyProductID: FAIL. Not purchasing product, either is not found or is not available for purchase"); } } // Otherwise ... else { // ... report the fact Purchasing has not succeeded initializing yet. Consider waiting longer or // retrying initiailization. Debug.Log("BuyProductID FAIL. Not initialized."); } } public void OnInitialized(IStoreController controller, IExtensionProvider extensions) { // Purchasing has succeeded initializing. Collect our Purchasing references. Debug.Log("OnInitialized: PASS"); // Overall Purchasing system, configured with products for this application. m_StoreController = controller; // Store specific subsystem, for accessing device-specific store features. m_StoreExtensionProvider = extensions; } public void OnInitializeFailed(InitializationFailureReason error) { Debug.Log("OnInitializeFailed InitializationFailureReason:" + error); } public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) { if (String.Equals(args.purchasedProduct.definition.id, kProductIDFreischaltungWerbung, StringComparison.Ordinal)) { hauptmenueSteuerung.buttonKaufWerbung.SetActive(false); int internetAktiv = PlayerPrefs.GetInt("InternetAktiv"); if (internetAktiv == 1) { werbungHauptmenue.BannerWerbungZerstoeren(); } PlayerPrefs.GetInt("WerbungAktiv", 0); PlayerPrefs.Save(); } else { Debug.Log(string.Format("ProcessPurchase: FAIL. Unrecognized product: '{0}'", args.purchasedProduct.definition.id)); } return PurchaseProcessingResult.Complete; } public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) { Debug.Log(string.Format("OnPurchaseFailed: FAIL. Product: '{0}', PurchaseFailureReason: {1}", product.definition.storeSpecificId, failureReason)); } } Das ist die Fehlermeldung: MissingMethodException: Method not found: 'UnityEngine.Debug.get_unityLogger'. UnityEngine.Purchasing.StandardPurchasingModule.Instance () Shop.InitializePurchasing () (at Assets/Scripts/Shop.cs:45) Shop.Start () (at Assets/Scripts/Shop.cs:25) Habt ihr eine Idee, was hier falsch läuft? Schon einmal Danke und grüße Kojote
  22. Ich würde das vielleicht etwas anders schreiben und nicht mit if-else sondern mit zwei mal if. So einen ähnlichen Fehler hatte ich auch schon einmal. Wenns doof kommt, kannst du mit dem Code in den Minusbereich kommen. Lass dir eventuell mal mit Debug.Log den Wert vom Motorspeed ausgeben. Denn so lane du keinen Key drückst wird Motor *-1 gerechnet. Würde also einmal mit if Abfragen ob ein Key gedrückt wird und einen Boolean auf True schalten, wenn los gelassen wurde, mit einem zweiten if Abfragen ob dieser true ist und hier rein deine Else packen.
×
×
  • Neu erstellen...