Jump to content
Unity Insider Forum
Sign in to follow this  
Dami1302

Objekt bewegen

Recommended Posts

Hallo,

Ich brauche Hilfe bei einem Skript. Ich möchte gerne eine Kugel zwischen zwei Wänden 20-mal hin und her laufen lassen. Kann mir jemand helfen? Das habe ich bis jetzt aber irgendwie funktioniert es nicht richtig.

#pragma strict

var Hit : int = 0;
var speed : float;
var target : Transform;

function Start () {

}

function Update () {

    transform.Translate (speed * Time.deltaTime, 0, 0);

}

function OnCollisionEnter (collision : Collision) {

    if (collision.gameObject.name == "Wand 1") { 
        Hit++;
        transform.position = Vector3.MoveTowards (transform.position, target.position, -speed *  Time.deltaTime);
    }

    if (collision.gameObject.name == "Wand 2") {
        Hit++;
        transform.position = Vector3.MoveTowards (transform.position, target.position, speed * Time.deltaTime);
    }

    if (Hit == 20)
        UnityEditor.EditorApplication.isPlaying = false;
}
 

Share this post


Link to post
Share on other sites

Hallöchen,

 ich rate mal ins Blaue, kann es sein das du bei Speed den Wert 0 hast und es darum sich nicht bewegt?!

Und könnte es auch sein, dass dies nicht so gut ist "  if (Hit == 20)  " wäre es nicht besser "  if (Hit > 19)  ", weil wenn es nie genau 20 ist, dann funkt es nicht.  Bin aber kein Programmierer ;-)

 " Lg

Ricky-W

Share this post


Link to post
Share on other sites

Tja, da sind viele Dinge, die fehlen können und viele Dinge, die auf jeden Fall falsch sind.

Hast du die Variable Target auch mit einem GameObject bestückt?
Heissen deine Wände auch genauso, wie du die Namen abfragst?
Hat dein Speed auch einen Wert?
Hat denn deine Kugel einen Rigidbody, oder wenigstens beide Wände? Wenn 2 Dinge kollidieren sollen, muss mindestens ein RB dabei sein, denn nur darüber wird überhaupt eine Kollision erfasst.

Aber das Hauptdingen, wenn jetzt alle Werte, Objekte und Namen richtig sind, ist das was du da bei der Kollision machst.
In dem Moment, wo du mit einer Wand kollidierst, führts du Vector3.MoveTowards aus. Entweder in die eine Richtung, oder in die Andere.

Aber eben nur in diesem einen Moment!!!

In der Update hast du aber ein transform.Translate nach rechts, welches ständig ausgeführt wird. So kann das nicht gehen.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...