Jump to content
Unity Insider Forum

Phash

Members
  • Content Count

    31
  • Joined

  • Last visited

Community Reputation

3 Neutral

About Phash

  • Rank
    Advanced Member
  1. noch n update... wenn ich den Inhalt der updateMethode aus der Klasse ProjectToPlane in der LateUpdate Methode der Klasse SmoothFollowCSharp verwende, dann gehts. Wenn ich ProjectToPlane nach unten schiebe, im Project Explorer, dann gehts auch, ruckelt aber...
  2. update.... dieses Script hier stört: using UnityEngine; using System.Collections; public class ProjectToPlane : MonoBehaviour { public GameObject ObjectToProject; // Use this for initialization void Start () { } // Update is called once per frame void Update () { var plane = new Plane(Vector3.up, 0); float distance; if (plane.Raycast(new Ray(transform.position, transform.forward), out distance)) { ObjectToProject.transform.position = transform.position + transform.forward * distance; } } } wie könnte man dieses Script mit dem smooth Follow zusammenbringen?
  3. Servus ich mache gerade ein Tutorial und habe dort eine einfache MainKamera mit einem einfachen Script erstellt: using UnityEngine; using System.Collections; public class CamController : MonoBehaviour { public Transform Target; // Use this for initialization void Start () { } public float Distance = 10.0f; // Update is called once per frame void LateUpdate () { if (!Target) { return; } transform.position = Target.position - Distance * transform.forward; } } ich weise dem Script meine Spielfigur zu, und die Kamer folgt dem Spieler. Allerdings rotiert sie nicht mit. Klar. Nach ein paar Recherchen kam ich auf das SmoothFollowScript using UnityEngine; using System.Collections; public class SmoothFollowCSharp : MonoBehaviour { /* This camera smoothes out rotation around the y-axis and height. Horizontal Distance to the target is always fixed. There are many different ways to smooth the rotation but doing it this way gives you a lot of control over how the camera behaves. For every of those smoothed values we calculate the wanted value and the current value. Then we smooth it using the Lerp function. Then we apply the smoothed values to the transform's position. */ // The target we are following public Transform target; // The distance in the x-z plane to the target public float distance = 10.0f; // the height we want the camera to be above the target public float height = 5.0f; // How much we public float heightDamping = 2.0f; public float rotationDamping = 3.0f; void LateUpdate () { // Early out if we don't have a target if (!target) return; // Calculate the current rotation angles float wantedRotationAngle = target.eulerAngles.y; float wantedHeight = target.position.y + height; float currentRotationAngle = transform.eulerAngles.y; float currentHeight = transform.position.y; // Damp the rotation around the y-axis currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime); // Damp the height currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime); // Convert the angle into a rotation Quaternion currentRotation = Quaternion.Euler (0, currentRotationAngle, 0); // Set the position of the camera on the x-z plane to: // distance meters behind the target transform.position = target.position; transform.position -= currentRotation * Vector3.forward * distance; // Set the height of the camera transform.position = new Vector3(transform.position.x, currentHeight, transform.position.z); // Always look at the target transform.LookAt (target); } } Das Script ist in Unity als js vorhanden, ich habe die C# Version genutzt. Was jetzt passiert: meine Spielfigur dreht sich zwar noch, wenn ich die Pfeiltasten nutze, allerdings bewegt sich die Figur nicht vom Fleck. Mit der einfachen Kamera geht es, mit dem smoothFollow Script nicht. Der Spieler ist der Target Variable zugewiesen. Hat jemand eine Idee, was hier los ist? using UnityEngine; using System.Collections; public class PlayerController : MonoBehaviour { private Drive drive; private Weapon weapon; // Use this for initialization void Start () { drive = GetComponent<Drive>(); weapon = GetComponent<Weapon>(); } // Update is called once per frame void Update () { if (weapon) { if (Input.GetKeyDown(KeyCode.Space)) { weapon.StartFiring(); } if (Input.GetKeyUp(KeyCode.Space)) { weapon.StopFiring(); } } if (drive) { if (Input.GetKey(KeyCode.UpArrow)) { drive.Accelerate(1.0f); } if (Input.GetKey(KeyCode.DownArrow)) { drive.Deaccelerate(1.0f); } if (Input.GetKey(KeyCode.RightArrow)) { drive.RotateRight(1.0f); } if (Input.GetKey(KeyCode.LeftArrow)) { drive.RotateLeft(1.0f); } } } } using UnityEngine; using System.Collections; public class Drive : MonoBehaviour { public float Acceleration = 1000.0f; public float Deacceleration = 1000.0f; public float RotationAcceleration = 300.0f; public float MaxForce = 1000.0f; public float MinForce = -500.0f; public float CurrentForce = 0.0f; private bool hasChangedCurrentForce = false; // Use this for initialization void Start () { } // Update is called once per frame void Update () { rigidbody.AddForce(CurrentForce * Time.deltaTime * transform.forward); if (!hasChangedCurrentForce) { var forwardFactor = Vector3.Dot(transform.forward, rigidbody.velocity); if (forwardFactor > 1.0f) { Deaccelerate(1.0f); } else if (forwardFactor < -1.0f) { Accelerate(1.0f); } else { CurrentForce = 0; } } hasChangedCurrentForce = false; } public void Accelerate(float factor) { CurrentForce += Time.deltaTime * Acceleration * factor; CurrentForce = Mathf.Clamp(CurrentForce, MinForce, MaxForce); hasChangedCurrentForce = true; } public void Deaccelerate(float factor) { CurrentForce -= Time.deltaTime * Deacceleration * factor; CurrentForce = Mathf.Clamp(CurrentForce, MinForce, MaxForce); hasChangedCurrentForce = true; } public void RotateRight(float factor) { rigidbody.AddTorque(0, Time.deltaTime * RotationAcceleration * factor, 0); } public void RotateLeft(float factor) { rigidbody.AddTorque(0, -Time.deltaTime * RotationAcceleration * factor, 0); } } btw.: die Force wird auf den Spieler angewandt. Er bewegt sich nur einfach nicht...
  4. hmm und wie verfolgt die cam "localPlayer"? ist das mit "findChild("localPlayer")" zu machen? Mir ist gerade nicht klar, wann es hier ein Prefab sein muss, und wann ein konkretes Objekt in der Szene. Gehen die Scripts auf die PreFabs oder auf die Objekte?
  5. ja, das nutze ich. ich habs auf verschiedene Arten versucht und keine geht... void FixedUpdate () { if (networkView.isMine) { cameraPrefab.enabled=true; InputMovement(); } else { cameraPrefab.enabled=false; SyncedMovement(); } }
  6. Servus ich versuch gerade, mein Game Netzwerkfähig zu machen. Ich komme aber gerade ein wenig durcheinander, und hab einen Knoten im Hirn... Also: ich habe ein Auto und eine Strecke. Ich möchte, dass mehrere Spieler auf der Strecke fahren können. Netzwerkverbindung klappt. Aber: ich krieg das mit der Kamera gerade nicht hin. Ich habe in meiner Hierarchie: Das Auto, mit Script zur Steuerung und NetworkView (Observed diese Objekt) Das Netzwerkobjekt (für Serverstart / Join) Eine Kamera die Strecke die Kamera observed in ihrem Script das Vehicle Netzwerkobjekt hat als PlayerPrefab das Vehicle Vehicle Network View auf das Vehicle In dieser Konstellation wird zwar ein neues Fahrzeug gespawned, wenn ein Spieler auf den Server connected (ich sehe einen Clone im Unity) aber es wird nur das Fahrzeug des Hosts gesteuert und mit der Kamera verfolgt. Wenn ich auf die prefabs zeige, dann bleibt die Kamera stehen. Zeige ich auf das konkrete Objekt, folgt alles nur dem Chef... Steuern geht korrekt... ich kann das Auto des gejoineten Spielers mit dessen Steuerung aus dessen Spielinstanz heraus lenken. Ich seh es dann an meinem Host vorbeifahren... aber die Kamera bleibt wo sie ist
  7. denk mal, man könnte das als zip packen - und dann wären da eben Unity Level und Models drin
  8. Servus, ich würde gerne eine Liste aller Level, die mein Spiel hat, ingame haben, um die Level laden zu können. Hintergrund: Jemand baut ein Level, und schmeisst dieses in einen Ordner in seiner Spielinstallation. Wenn er das Spiel nun startet, soll sein Level auch auswählbar sein. Kann ich einen Ordner auf Veränderung überwachen und dessen Inhalte ins Spiel übernehmen?
  9. Du kannst einfach dein Spiel beim Master Server anmelden, und einen Raum erstellen. Alle anderen, die nach deinem Spiel suchen, erhalten dann die Räume und können connecten. Ich habs bisher nur über den public unity Master Server gemacht, weil das bisher ausgereicht hat. Wenn du einen GameServer erstellen willst, dann brauchst du eigentlich "nur" ein Programm, das auf dem Server läuft, und das die Netzwerkanfragen entgegennimmt und entsprechend weiterleitet. Ob man das mit Unity machen kann, weiss ich allerdings nicht - ich hatte da nur mal selber was geschrieben... aber das war nur was kleines, auf SocketBasis
  10. Werbung sollte generell nur leise und nicht blinkend sein. Es gibt doch extra so Werbung, die der Adblocker nicht wegblockt (hab da vor einiger Zeit mal was gelesen, als alle deutschen Zeitungen diesen Anti-Ad-Block Tag hatten) auf heise.de seh ich z.b. Werbung, und hab den Blocker aktiv. Hier im Forum seh ich keine Werbung...
  11. Phash

    CommunityGame

    ein so Pamphlet habe ich jetzt schonmal mit Leben gefüllt. Den Rest mach ich die Woche noch... wir haben gestern eine Featurelist erstellt, und einiges geklärt. Ausserdem haben wir eine clockingIT Seite eingerichtet (die ist aber wohl nur per Registration erreichbar) um die Aufgaben zu verwalten und zu verteilen
  12. Phash

    CommunityGame

    es könnte sein, dass wir hier unterschiedliche Vorstellungen und Ansprüche haben. Einfach etwas gemeinsam machen, auch wenn es "scheitert" muss doch nicht grundsätzlich schlecht sein. Klar, man kann das auch alleine machen, aber warum lässt du uns das nicht einfach selbst entscheiden, ob wir das alleine oder im Team machen wollen? Wenn du dich nicht beteiligen willst, dann ist das doch dein gutes Recht, und wenn einige Leute mit der Organisation unzufrieden sind, und nicht mitmachen wollen, weil es ein paar nicht so öffentliche Mittel gibt, dann ist das doch auch ok. man kann nie 100% der Leute einfangen, und ein Projekt, an dem 50 ehrenamtliche mitarbeiten ist tatsächlich zu groß. Aber einfach mal n bissl was machen, Ideen austauschen und sich gegenseitig anspornen muss doch nicht immer gleich im Verkaufshit des Jahres münden, geschweige denn, in einem fertigen Produkt.
  13. Phash

    CommunityGame

    die Basis ist super. Wir sind mittlerweile einige Leute und haben bereits angefangen... wir haben jedweden Ballast über Bord geworfen und einfach mal angefangen. Alle Beteiligten konnten schon etwas beisteuern und ich denke, jeder hat schon etwas gelernt. Zweck ist eigentlich schon fast erfüllt und nette Leute habe ich auch schon kennengelernt *g* Finds von daher ok. Wir suchen gerade noch ein paar Ideen, haben eine GamePlay Idee angefangen, und einfach losgelegt. Der erste playable Prototyp steht schon. und der wird jetzt iterativ verbessert. Als nächstes werden die Ideen, die noch dazu kommen, eingebaut, und, auch wenn es kein Blockbuster werden wird, das basteln allein macht schon gut Laune
  14. Phash

    CommunityGame

    Servus es hat jemand einfach mal was gemacht, und das ist wieder keinem Recht... pff... es haben sich nun ein paar zusammengefunden, die machen einfach mal n kleines Spiel, und haben Spaß daran. np. ist es eben kein CommunityGame mehr, sondern einfach ein kleines Projekt aus der Community raus entstanden
  15. Update 2 .. google hat dann doch geholfen, nachdem ich auf die richtigen Suchbegriffe gestoßen bin.... http://answers.unity3d.com/questions/190837/make-a-rigidbody-jump-global-up.html
×
×
  • Create New...