Jump to content
Unity Insider Forum

Shalafi

Members
  • Content count

    17
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Shalafi

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Shalafi

    ParticleSystem - BulletTracer

    Hi, danke für deine Antwort. Da sich die Spitze der Waffe nicht genau in der Bildschirm-Mitte befindet, würde ein Raycast aus der Waffe recht ungenau sein, oder? Dass das Projektil dahin fliegt, wo der Raycast trifft, das hatte ich schon so eingebaut. Das Problem war allerdings, dass das Projektil falsch fliegt, wenn der Raycast nichts trifft. Ich hatte dann die Projektil in Richtung der Kamera-Rotation fliegen lassen. Dann hatte ich allerdings das Problem, dass wenn ich knapp neben ein Objekt schieße, der Raycast also nichts trifft, das Projektil trotzdem das Objekt trifft, da sich die Spitze der Waffe ja nicht in der Mitte der Kamera befindet. Ich suche eine Lösung des Problems. Gruß
  2. Shalafi

    ParticleSystem - BulletTracer

    Hi, ok danke. Wir geht man dann mit diesem Problem um? Garkein Raycast nutzen und die Bullet-Collision nutzen? Gruß
  3. Shalafi

    ParticleSystem - BulletTracer

    Oder ist ein Bullet-Objekt mit Trail-Renderer für diese Sache besser geeignet? Ich hatte das schonmal ausprobiert, und es hat eigendlich auch gut funktioniert. Das Problem war allerdings, dass der Raycast des Schusses von der MItte der Kamera ausgeht, das Projektil allerdings aus der Spitze der Waffe kommt. Das hat dazu geführt, dass das Projektil unter Umständen ein Objekt trifft, was der Raycast nicht getroffen hat. Wie löst man die Situation mit Bullet-Tracers am besten? Gruß
  4. Shalafi

    ParticleSystem - BulletTracer

    Hi, ich möchte ein ParticleSystem als BulletTracer für ein FPS benuzten. Dazu hab ich das ParicleSystem direkt an der Spitze der Waffe platziert. Das Particle-System ändert auch die Rotation zusammen mit der Kamera bzw. dem Fadenkreuz, damit die Schüsse immer in die richtige Richtung gehn. Der Renderer hat den Render-Mode Streched-Billboard und eine Length-Scale von 20. Das Problem ist jetzt, dass die Particle anscheinend ihren Mittelpunkt an der Position des ParticleSystems haben und somit der halbe Particle durch die Waffe und den Spieler nach hinten gerendert wird. Wie kann ich das verhindern? Die Particle sollen immer direkt vor der Waffe anfangen. Gruß
  5. Hi, ich versuche mich an einem FPS. Ich hab ein Modell mit MakeHuman erstellt und eingebunden, so dass man die Arme sieht und wenn man an sich runter guckt die Beine. Nun möchte ich das gerne mit Waffen aus dem Asset-Store kombinieren, so dass man sie in die Hand nehmen und animieren kann. Ich hab im Moment keine Ahnung, wie ich sowas machen kann. Hat jemand ein gutes Tutorial als Einstiegspunkt für mich? Gruß
  6. Shalafi

    Destroy zerstört alle Clone

    Hi, hier ist es: public class Grenade : MonoBehaviour { public float Explosiontime { get; set; } public float Countdown = 5f; public float BlastRadius = 5f; public float ExplosionPower = 100f; public float MaxDmg = 100f; void Start() { this.Explosiontime = -1; } void Update() { if (this.Explosiontime > 0 && Time.time >= this.Explosiontime) { this.Explode(); } } //Countdown beginnt public void Throw(float throwtime) { this.Explosiontime = throwtime + this.Countdown; } //Explosion private void Explode() { Explosion.Explode(this.transform.position, this.BlastRadius, this.ExplosionPower, this.MaxDmg); Destroy(this.gameObject); } } Und das Skript für die Explosion auch noch: public static class Explosion { public static void Explode(Vector3 explosion_position, float BlastRadius, float ExplosionPower, float MaxDMG) { Collider[] hitColliders; hitColliders = Physics.OverlapSphere(explosion_position, BlastRadius); foreach (Collider hitcol in hitColliders) { if (hitcol.GetComponent<Rigidbody>() != null || hitcol.GetComponent<GaW.Player.PlayerStats>() != null) { //Gucken, das nix im Weg RaycastHit hit; bool wallhit = false; if (Physics.Raycast(explosion_position, hitcol.transform.position - explosion_position, out hit, BlastRadius)) { if (hit.transform.GetComponent<Rigidbody>() == null && hit.collider != hitcol && hit.transform.tag != "Player") { wallhit = true; } } if (wallhit == false) { if (hitcol.GetComponent<Rigidbody>() != null) { hitcol.GetComponent<Rigidbody>().AddExplosionForce(ExplosionPower, explosion_position, BlastRadius, 1, ForceMode.Impulse); } if (hitcol.GetComponent<GaW.Player.PlayerStats>() != null) { Vector3 closespoint = hitcol.ClosestPoint(explosion_position); float dmg = MaxDMG * (1 - (Vector3.Distance(explosion_position, closespoint) / BlastRadius)); hitcol.GetComponent<GaW.Player.PlayerStats>().Damage(dmg); } } } } } } Gruß
  7. Shalafi

    Destroy zerstört alle Clone

    Hi, Ich hab ein Skript geschrieben, dass Granaten wirft. Das Problem ist, dass wenn ich mehrere Granaten werfe, und die erste sich nach der Explosion selbst löscht (Destroy(this.gameObject);), werden alle Granaten gelöscht, auch die, die noch nicht explodiert sind. Hier mein Skript: public class ThrowGranade : MonoBehaviour { public GameObject GrenadePrefab; private Transform MyTransform; private GameObject GrenadeObj; private Transform CameraTransform; public float ThrowForce = 5f; // Use this for initialization void Start() { this.MyTransform = this.transform; this.CameraTransform = this.transform.Find("Body/PlayerCamera").transform; } // Update is called once per frame void Update() { if (Input.GetButtonDown("ThrowGrenade")) { this.InstantiateGrenade(); } else if (Input.GetButtonUp("ThrowGrenade")) { this.ThrowGrenade(); } } private void InstantiateGrenade() { if (this.GrenadePrefab != null) { this.GrenadeObj = (GameObject)Instantiate(this.GrenadePrefab, this.CameraTransform.TransformPoint(.45f,-.25f,.7f), this.CameraTransform.rotation); this.GrenadeObj.GetComponent<Rigidbody>().isKinematic = true; this.GrenadeObj.transform.SetParent(this.CameraTransform, true); } } private void ThrowGrenade() { if (this.GrenadeObj != null) { this.GrenadeObj.GetComponent<Grenade>().Throw(Time.time); this.GrenadeObj.transform.SetParent(null, true); this.GrenadeObj.GetComponent<Rigidbody>().useGravity = true; this.GrenadeObj.GetComponent<Rigidbody>().isKinematic = false; this.GrenadeObj.GetComponent<Rigidbody>().AddForce(this.CameraTransform.forward * this.ThrowForce, ForceMode.Impulse); this.GrenadeObj.GetComponent<Rigidbody>().AddForce(this.MyTransform.up * this.ThrowForce, ForceMode.Impulse); } } } Kann man das irgendwie verhindern? Google konnte mir da auch nicht richtig weiterhelfen. Gruß
  8. Shalafi

    Rigidbody.AddForce() funktioniert nicht

    Hi, das Problem ist jetzt, dass sobald ich das Parent auf null setzte, die Granate an eine andere Position gesetzt wird. Kann man das verhindern? Gruß
  9. Shalafi

    Rigidbody.AddForce() funktioniert nicht

    Hi, scheinbar hat ein this.GrenadeObj.transform.SetParent(null); this.GrenadeObj.transform.SetParent(null); das Problem gelöst. Kann mir das jemand erklären? Gruß
  10. Shalafi

    Rigidbody.AddForce() funktioniert nicht

    Hi, mein Spieler-Model besteht aktuell nur aus einer Capsule und 2 Cubes als Arme. Die Arme haben keinen Collider. Daran kann es eigendlich auch nich liegen .... Gruß
  11. Shalafi

    Rigidbody.AddForce() funktioniert nicht

    Hi, ok, hab ich gemacht. Wenn ich jetzt die Taste loslasse, verschwindet die Granate einfach. Im Inspector bewegt sich die Granate weiter wie verrückt (Position + Rotation). Eigendlich hat das Granaten-Prefab nen Capsule-Collider. Eigendlich sollte sie doch dann auf dem Boden, bzw an Wänden abprallen. PS: Die Granate hat ne Mass von 10, dass die Granate zu schnell fliegt um sie zu sehn, sollte es nicht sein... Gruß
  12. Hi, ich schreibe in C# Skript um eine Granate zu werfen: public class ThrowGranade : MonoBehaviour { public GameObject GrenadePrefab; private Transform MyTransform; private GameObject GrenadeObj; public float ThrowForce = 30f; // Use this for initialization void Start() { this.MyTransform = this.transform; } // Update is called once per frame void Update() { if (Input.GetButtonDown("ThrowGrenade")) { this.InstantiateGrenade(); } else if (Input.GetButtonUp("ThrowGrenade")) { this.ThrowGrenade(); } } private void InstantiateGrenade() { if (this.GrenadePrefab != null && this.GrenadeObj == null) { this.GrenadeObj = (GameObject)Instantiate(this.GrenadePrefab, this.MyTransform.TransformPoint(0, .1f, .6f), this.MyTransform.rotation); this.GrenadeObj.transform.SetParent(this.transform.parent.parent); } } private void ThrowGrenade() { if (this.GrenadeObj != null) { this.GrenadeObj.GetComponent<Rigidbody>().useGravity = true; this.GrenadeObj.GetComponent<Rigidbody>().isKinematic = true; this.GrenadeObj.GetComponent<Rigidbody>().AddForce(this.MyTransform.forward * this.ThrowForce, ForceMode.Impulse); } } } Leider funktioniert das AddForce() in der letzten Zeile nicht. Ich hab auch bei Google nichts richtiges gefunden. Kann mir jemand weiterhelfen? Gruß
  13. Hi, ich hab ein Inventar-Panel erstellt, mit Drag&Drop. Dabei erstelle ich beim Drag ein Image-Panel, mit dem Gegenstand-Icon, an der Maus-Position. Das Problem ist, dass beim Drop immer dieses Image mit dem OnDrop angesprochen wird. Kann ich das irgendwie verhindern, so dass der Slot wo ich eigendlich hin will angesprochen wird, nicht das Icon-Panel an der Mausposition. Gruß
  14. Shalafi

    Drag&Drop mit ScrollRect

    Hab grad gesehn, dass der Post im falschen Forum gelandet ist. Bitte verschieben, wenns jemand kann.
  15. Hi, Ich habe ein kleines Inventar-Fenster gebaut. Darin werden in einem Scrollrect verschiedene Panels angezeigt, die mein Intentar repräsentieren. Jedem Slot haben ich ein Skript hinzugefügt, dass die Item-Informationen enthält. Jetzt möchte ich die ganze Sache per Drag&Drop erweitern. public class ItemSlotData : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler { public Item item { get; set; } public int amount { get; set; } void Awake() { this.item = null; this.amount = 0; } public void OnBeginDrag(PointerEventData eventData) { Debug.Log("DRAG START"); } public void OnDrag(PointerEventData eventData) { throw new System.NotImplementedException(); } public void OnEndDrag(PointerEventData eventData) { throw new System.NotImplementedException(); } } Die OnBeginDrag-Methode wird aber nicht ausgeführt. Woran liegt das? Liegt es daran, dass die einzelnen Slots sich in einem ScrollRect befinden? Gruß
×