Jump to content
Unity Insider Forum

OnMouseDrag funktioniert nicht mehr in Wand


vitafit

Recommended Posts

Guten Abend,

folgendes Problem: Ich bewege einen Würfel mit Hilfe von OnMouseDrag() über den Boden, soweit kein Problem. Sobald eine Kollision erkannt wird, färbt sich der Würfel rot, sonst grün. Folgendes Szenario bereitet mir leider ein Problem:

o2cgU3N.png

 

Sobald der Würfel "in der Wand steckt", funktioniert onMouseDrag nicht mehr. Ich hab der Wand bereits einen eigenen Layer zugewiesen, welcher nicht mit GUI kollidiert. Leider ohne Erfolg. Sicherlich übersehe ich hier etwas grundlegendes? Die Wand ist im übrigen ein normaler Box-Collider.

Danke für eure Rückmeldung!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gerade eben schrieb Sascha:

Naja, so ganz ohne deinen Code wird's schwierig.

Sry, folgendes Script liegt auf dem Würfel den ich bewege:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestDrag : MonoBehaviour {

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        
    }

    void OnMouseDrag()  //Drag mechanic
    {
        float distance_to_screen = Camera.main.WorldToScreenPoint(gameObject.transform.position).z;
        Vector3 pos_move = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance_to_screen));
        transform.position = new Vector3(pos_move.x, transform.position.y, pos_move.z);
        //GetComponent<Rigidbody>().MovePosition(new Vector3(pos_move.x, transform.position.y, pos_move.z));
    }

    private void OnCollisionEnter(Collision collision)
    {
        GetComponent<Renderer>().material.color = Color.red;
    }

    private void OnCollisionExit(Collision collision)
    {
        GetComponent<Renderer>().material.color = Color.green;
    }

    private void OnCollisionStay(Collision collision)
    {
        GetComponent<Renderer>().material.color = Color.red;
    }

}

So sieht der entsprechende Würfel aus (den ich bewege, siehe Script oben drüber):

92NnL3N.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also bei mir funktioniert das Skript (auch wenn der Würfel irgendwo drin steckt). Du kannst ja noch zusätzlich alles außer deinem Würfel dem Layer "Ignore Raycast" zuweisen, dann kannst du deinen Würfel sogar durch die Wand hindurch verschieben. Wenn nämlich der "Ray" von deiner Mausposition durch einen anderes Objekt blockiert wird, dann wird OnMouseDrag() nicht ausgelöst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 29.5.2017 um 00:52 schrieb Zer0Cool:

Also bei mir funktioniert das Skript (auch wenn der Würfel irgendwo drin steckt). Du kannst ja noch zusätzlich alles außer deinem Würfel dem Layer "Ignore Raycast" zuweisen, dann kannst du deinen Würfel sogar durch die Wand hindurch verschieben. Wenn nämlich der "Ray" von deiner Mausposition durch einen anderes Objekt blockiert wird, dann wird OnMouseDrag() nicht ausgelöst.

Sorry für die späte Rückmeldung. Dein Ansatz wart richtig: Ich hab die Wand in den Layer Ignore Raycast gesetzt und siehe da; Problem gelöst.

Vielen Dank!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...