Desired Result:
I want to make it so that when I mouse click in my camera, a turret will spawn. But if a turret is in the way, do not spawn a turret.
The issue:
My code appears to work sometimes. Debug log will output that I can’t put a turret, other times it will spawn a turret over a turret when it shouldn’t.
Code in question:
#pragma strict
private var cam_speed : float = 0.008;
var theTurret : GameObject;
private var isIOSDevice : boolean = false;
var clickDetected : boolean;
var clickDetected2 : boolean;
var clickUnDetected2 : boolean;
var touchPosition : Vector3;
var dragTurretTarget : GameObject = null;
var dragTurret : boolean = false;
function Awake ()
{
if (Application.platform == RuntimePlatform.IPhonePlayer)
{
isIOSDevice = true;
}
else
{
isIOSDevice = false;
}
}
function Update ()
{
//Speed of Cam Scrolling
transform.position.x += cam_speed;
//Detect click and calculate touch position
if (isIOSDevice)
{
//Variables for spawning turret based on a tap
clickDetected = (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began);
touchPosition = Input.GetTouch(0).position;
//Variables for dragging turret with finger
clickDetected2 = (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began);
//touchPosition2 = Input.GetTouch(0).position;
}
else
{
//Variables for spawning turret based on a mouseclick
clickDetected = (Input.GetMouseButtonDown(0));
touchPosition = Input.mousePosition;
//Variables for dragging turret with mousedrag
clickDetected2 = (Input.GetMouseButton(1));
clickUnDetected2 = (Input.GetMouseButtonUp(1));
//touchPosition2 = Input.mousePosition;
}
//Detect click/tap to spawn turret
if (clickDetected)
{
buildTurret();
}
//Detect drag to drag turret
if (clickDetected2)
{
checkDragTurret();
}
if (clickUnDetected2)
{
dragTurret = false;
}
}
function buildTurret()
{
//var mousePos = Input.mousePosition;
var ray : Ray = GameObject.FindWithTag("MainCamera").camera.main.ScreenPointToRay (touchPosition);
var hit : RaycastHit;
if (Physics.Raycast (ray, hit, Mathf.Infinity))
{
if (hit.collider.tag == "TurretCollision")
{
Debug.Log("Can't deploy, another turret is there.");
}
else
{
var newTurret = Instantiate(theTurret, hit.point, Quaternion.identity);
newTurret.transform.position.y = 0.5;
}
}
}
function checkDragTurret()
{
var dragMousePos = Input.mousePosition;
var dragRay : Ray = GameObject.FindWithTag("MainCamera").camera.main.ScreenPointToRay (touchPosition);
var dragHit : RaycastHit;
if (Physics.Raycast (dragRay, dragHit, Mathf.Infinity))
{
if (dragHit.collider.tag == "TurretCollision")
{
dragTurretTarget = dragHit.transform.parent.gameObject;
dragTurret = true;
}
if (dragTurret == true)
{
dragTurretTarget.transform.position = dragHit.point;
dragTurretTarget.transform.position.y = 0.5;
}
}
}