Duvida OnMouseDown
3 participantes
Página 1 de 1
Duvida OnMouseDown
Tenho um canvas e preciso usar OnMouseDown ou OnMouseClick para iniciar um arrasto, sendo que este objeto a ser arrastado (precisa ser duplicado), tentei utilizar Instantiate (objeto, transform.position, transform.rotation)as GameObject). Mas não está funcionando alguém saberia me explicar?
Alessandra Matheus- Membro
- PONTOS : 3176
REPUTAÇÃO : 2
Respeito as regras :
Re: Duvida OnMouseDown
use o EventSystems necessariamente o IBeginDragHandler, IDragHandler e IEndDragHandler
http://docs.unity3d.com/ScriptReference/EventSystems.IBeginDragHandler.html
http://docs.unity3d.com/ScriptReference/EventSystems.IDragHandler.html
http://docs.unity3d.com/ScriptReference/EventSystems.IEndDragHandler.html
http://docs.unity3d.com/ScriptReference/EventSystems.IBeginDragHandler.html
http://docs.unity3d.com/ScriptReference/EventSystems.IDragHandler.html
http://docs.unity3d.com/ScriptReference/EventSystems.IEndDragHandler.html
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Duvida OnMouseDown
obrigada!
Alessandra Matheus- Membro
- PONTOS : 3176
REPUTAÇÃO : 2
Respeito as regras :
Re: Duvida OnMouseDown
nao sei programa muito bem
e o que eu sei em em javascript
mais
vc pode fazer assim
ai no OBJETOQUEVAISERARRASTA vc utiliza o script do marcos(que esta em c#)
https://www.schultzgames.com/t67-tutorial-arrastar-objetos-com-o-mouse
e o que eu sei em em javascript
mais
vc pode fazer assim
- Código:
var OBJETOPARASERARRASTADO:GameObject;
function OnMouseDown(){
Instantiate (OBJETOPARASERARRASTADO, transform.position, transform.rotation);
}
ai no OBJETOQUEVAISERARRASTA vc utiliza o script do marcos(que esta em c#)
https://www.schultzgames.com/t67-tutorial-arrastar-objetos-com-o-mouse
danyllo106- Avançado
- PONTOS : 3522
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Duvida OnMouseDown
axo q vc qr q so o objeto instanciado seja arrastado
mais eu axo q vc pode usar um boolean no script do marcos
mais eu axo q vc pode usar um boolean no script do marcos
danyllo106- Avançado
- PONTOS : 3522
REPUTAÇÃO : 7
Idade : 27
Respeito as regras :
Re: Duvida OnMouseDown
Obrigada pela ajuda e eu deparei com outro erro, utilizando os métodos explicados acima. O meu "objeto clonado" fica fora do canvas tem como trazê-lo para dentro do canvas?
Alessandra Matheus- Membro
- PONTOS : 3176
REPUTAÇÃO : 2
Respeito as regras :
Re: Duvida OnMouseDown
use o SetParent
como o objeto UI não fica em relação ao mundo passe o parâmetro false
http://docs.unity3d.com/ScriptReference/Transform.SetParent.html
como o objeto UI não fica em relação ao mundo passe o parâmetro false
- Código:
public Transform newParent;
transform.SetParent(newParent,false);
http://docs.unity3d.com/ScriptReference/Transform.SetParent.html
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Duvida OnMouseDown
Obrigada!
Alessandra Matheus- Membro
- PONTOS : 3176
REPUTAÇÃO : 2
Respeito as regras :
Re: Duvida OnMouseDown
Vou mostrar meu código pra ver se vocês me ajudam, mesmo utilizando setParent o meu objeto é criado fora do canvas.
Segue código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class cloneObjeto : MonoBehaviour, IBeginDragHandler,IDragHandler,IEndDragHandler {
public GameObject peca;
public Transform newParent;
public bool clona = true;
// Use this for initialization
void Start () {
if (clona) {
clonePeca ();
}
}
// Update is called once per frame
void Update () {
}
void clonePeca (){
for (int i = 0; i < 5; i++){
peca.GetComponent
//Instantiate(peca, transform.position, transform.rotation);
peca.transform.SetParent (newParent, false);
Instantiate(newParent, transform.position, transform.rotation);
http://Debug.Log (peca.transform.GetSiblingIndex() + " 2");
peca.transform.SetSiblingIndex (1);
http://Debug.Log (peca.GetComponentInParent<Canvas>() + "aaaa");
http://Debug.Log (peca.GetComponentInParent<Canvas>());
}
}
public void OnBeginDrag(PointerEventData eventData){
// Debug.Log ("OnBeginDrag");
transform.Rotate (Vector3.forward * -90);
}
public void OnDrag(PointerEventData eventData){
http://Debug.Log ("OnDrag");
peca.transform.SetSiblingIndex (peca.transform.GetSiblingIndex() + 1);
peca.transform.position = eventData.position;
}
public void OnEndDrag(PointerEventData eventData){
Debug.Log ("OnEndDrag");
}
}
Segue código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class cloneObjeto : MonoBehaviour, IBeginDragHandler,IDragHandler,IEndDragHandler {
public GameObject peca;
public Transform newParent;
public bool clona = true;
// Use this for initialization
void Start () {
if (clona) {
clonePeca ();
}
}
// Update is called once per frame
void Update () {
}
void clonePeca (){
for (int i = 0; i < 5; i++){
peca.GetComponent
//Instantiate(peca, transform.position, transform.rotation);
peca.transform.SetParent (newParent, false);
Instantiate(newParent, transform.position, transform.rotation);
http://Debug.Log (peca.transform.GetSiblingIndex() + " 2");
peca.transform.SetSiblingIndex (1);
http://Debug.Log (peca.GetComponentInParent<Canvas>() + "aaaa");
http://Debug.Log (peca.GetComponentInParent<Canvas>());
}
}
public void OnBeginDrag(PointerEventData eventData){
// Debug.Log ("OnBeginDrag");
transform.Rotate (Vector3.forward * -90);
}
public void OnDrag(PointerEventData eventData){
http://Debug.Log ("OnDrag");
peca.transform.SetSiblingIndex (peca.transform.GetSiblingIndex() + 1);
peca.transform.position = eventData.position;
}
public void OnEndDrag(PointerEventData eventData){
Debug.Log ("OnEndDrag");
}
}
Alessandra Matheus- Membro
- PONTOS : 3176
REPUTAÇÃO : 2
Respeito as regras :
Re: Duvida OnMouseDown
isso pq vc tem que criar um Variável Local do tipo GameObject e referenciar o novo objeto para ele usando o Instantiate
ex:
ex:
- Código:
GameObject tempObject = Instantiate(newParent, transform.position, transform.rotation) as GameObject;
tempObject.transform.SetParent(newParent,false);
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Duvida OnMouseDown
Obrigada, funcionou direitinho.
Alessandra Matheus- Membro
- PONTOS : 3176
REPUTAÇÃO : 2
Respeito as regras :
Weslley- Moderador
- PONTOS : 5727
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Tópicos semelhantes
» OnMouseDown
» [Duvida] Duvida Com script de mover em direção ao mouse.
» [DÚVIDA] Dúvida sobre script e rigidbody
» duvida
» (DUVIDA ) Duvida com SCRIPTS
» [Duvida] Duvida Com script de mover em direção ao mouse.
» [DÚVIDA] Dúvida sobre script e rigidbody
» duvida
» (DUVIDA ) Duvida com SCRIPTS
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos