using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DragThrow : MonoBehaviour
{
public GameObject objItem;
public CapsuleCollider2D coll;
public Transform itemRoot;
Transform curTrans;
Vector2 startPos;
// Use this for initialization
void Start ()
{
Input.multiTouchEnabled = true;
}
// Update is called once per frame
void Update ()
{
//FingersTouch ();
MouseTouch();
}
public bool SingleTouch()
{
return Input.touchCount == 1;
}
public bool MultipointTouch()
{
return Input.touchCount > 1;
}
public bool BegintTouch(Touch t)
{
return t.phase == TouchPhase.Began;
}
public bool EndtTouch(Touch t)
{
return t.phase == TouchPhase.Ended;
}
void FingersTouch()
{
for (int i = 0; i < Input.touchCount; ++i)
{
if (BegintTouch(Input.touches[i]))
{
//生成一个物体
CreateItem(Input.touches[i].position);
}
}
}
void MouseTouch()
{
if (Input.GetMouseButtonDown(0))
{
CreateItem (GetMouseWorldPos());
}
if (curTrans != null)
{
SetAngle ();
ChangeSize ();
}
}
void CreateItem(Vector2 pos)
{
if (!coll.OverlapPoint(pos))
{
Debug.Log ("====================outSide");
return;
}
GameObject go = Instantiate (objItem) as GameObject;
go.transform.SetParent (itemRoot);
go.transform.position = pos;
go.transform.localPosition = new Vector3 (go.transform.localPosition.x,go.transform.localPosition.y,0);
go.transform.localScale = new Vector3 (1, 0, 1);
curTrans = go.transform;
}
void ChangeSize()
{
float x = Input.mousePosition.x - GeTransScreenPos (curTrans).x;
float y = Input.mousePosition.y - GeTransScreenPos (curTrans).y;
Debug.Log ("");
float size = Mathf.Sqrt(x*x + y*y) / 500.0f;
int f = Input.mousePosition.y > GeTransScreenPos (curTrans).y ? 1 : -1;
curTrans.transform.localScale = new Vector3 (1,size*f*2,1);
}
void SetAngle()
{
startPos = GeTransScreenPos (curTrans);
Vector2 line1 = startPos - new Vector2 (startPos.x, Input.mousePosition.y);
Vector2 line2 = startPos - new Vector2(Input.mousePosition.x,Input.mousePosition.y);
Vector3 v3 = Vector3.Cross(line1, line2);
float angle = 0;
if (v3.z > 0)
{
angle = Vector3.Angle (line1, line2);
}
else
{
angle = 360.0f - Vector3.Angle(line1, line2);
}
curTrans.localEulerAngles = new Vector3 (0,0,angle);
}
Vector3 GetMouseWorldPos()
{
return Camera.main.ScreenToWorldPoint (Input.mousePosition);
}
Vector3 GeTransScreenPos(Transform trans)
{
return Camera.main.WorldToScreenPoint (trans.position);
}
}