Jump to content
Unity Insider Forum
Sophia Fischer

Bewegung eines GameObjects mit Maus

Recommended Posts

Hallo liebe Community,

ich versuche gerade eine Kollisionserkennung umzusetzen, wobei ich mein auf Kollision zu untersuchendes GameObject mit der Maus bewegen möchte. Bei der Kollision soll das auf Kollision zu untersuchende GameObject frei beweglich sein und eben der Maus folgen, während alle anderen Objekte im Raum Hindernisse darstellen, die bei der Kollision mit dem GameObject an ihrer Stelle verharren und keine physikalische Reaktion zeigen. Das GameObject soll bei Berührung mit einem Hindernis stoppen und nicht mit der Maus durch dieses hindurch bewegt werden können. Alle Hindernisse sind mit Collidern versehen, das GameObject besitzt einen Collider und einen Rigidbody (mit isKinematic = false). Die Bedingung, dass das GameObject der Position der Maus folgen soll, ist wohl stärker als die Bedingung, dass die Collider sich eigentlich nicht durchdringen sollen. Ich hatte mit überlegt, dass das Skript, welches für das Folgen der Mausbewegung verantwortlich ist, bei Berührung von GameObject und Hindernis inaktiv wird. Dann bleibt das GameObject aber logischerweise an der Oberfläche hängen, es kann darauf per Maus nicht mehr zugegriffen werden.

Kann mir jemand von euch bei meinem Problem weiterhelfen? 

Share this post


Link to post
Share on other sites

Erstelle doch ein Emty GameObject, welches direkt an der Maus hängt - bzw. den Mausbewegungen folgt, und keine Kollisionen mit anderen Objekten hat. Zusätzlich erstellst du ein zweites sichtbares GameObjekt, welches dem ersten folgt. Bei mir mache ich das für die Touch Steuerung mit folgendem Script:

public GameObject plyTarget;
    private Transform plyTargetPos;
    public float plyMoveSpeed = 0.16f;

    void Start()
    {
        plyTargetPos = plyTarget.GetComponent<Transform>();
    } 

    private void FixedUpdate()
    {
        if (plyTarget != null)
        {
            transform.position = Vector3.Lerp(transform.position, plyTargetPos.position, plyMoveSpeed);
        }
    }

Somit kannst du für dieses zweite GameObject die Kollisionen besser koordinieren.

Share this post


Link to post
Share on other sites

Erscheint mir wie ein Fall für Physics.BoxCast o.ä.

Du testest damit den Weg von der alten zur neuen Position und verschiebst es dann um RaycastHit.distance zu Maus hin. Es findet somit keine Kollision statt.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×