Question by
Copenhagenn · Aug 05, 2017 at 06:16 PM ·
cameradragtouch controlsorthographicperspective
Drag and Stay(Fly)
Guys i created a script where the user will be able to drag the 3D Object and stay on air and no falling. My problem is the script only works with orthographic mode and not with perspective view. using orthographic will make my 3d objects looks like 2d. so i want to make it work with perspective mode. any help?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Drag : MonoBehaviour
{
public GameObject gameObjectTodrag;
public Vector3 GOcenter;
public Vector3 touchPosition;
public Vector3 offset;
public Vector3 newGOCenter;
RaycastHit hit;
public bool draggingMode = false;
private void Update()
{
/*
if(Input.GetMouseButton(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
gameObjectTodrag = hit.collider.gameObject;
GOcenter = gameObjectTodrag.transform.position;
touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
offset = touchPosition - GOcenter;
draggingMode = true;
}
}
if(Input.GetMouseButton(0))
{
if(draggingMode)
{
touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
newGOCenter = touchPosition - offset;
gameObjectTodrag.transform.position = new Vector3(newGOCenter.x, newGOCenter.y, newGOCenter.z);
}
}
if(Input.GetMouseButtonUp(0))
{
draggingMode = false;
}
*/
foreach (Touch touch in Input.touches)
{
switch(touch.phase)
{
case TouchPhase.Began:
Ray ray= Camera.main.ScreenPointToRay(touch.position);
if(Physics.SphereCast(ray, 0.3f, out hit))
{
gameObjectTodrag = hit.collider.gameObject;
GOcenter = gameObjectTodrag.transform.position;
touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
offset = touchPosition - GOcenter;
draggingMode = true;
}
break;
case TouchPhase.Moved:
if(draggingMode)
{
touchPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
newGOCenter = touchPosition - offset;
gameObjectTodrag.transform.position = new Vector3(newGOCenter.x, newGOCenter.y, newGOCenter.z);
}
break;
case TouchPhase.Ended:
draggingMode = false;
break;
}
}
}
}
Comment