public override void DoAction(PlayerState ps, GameObject go) { if (Input.GetMouseButtonDown(0)) { //RaycastHit2D rayHit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); RaycastHit2D rayHit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, 10, LayerMask.GetMask("point")); if (rayHit.transform != null //&& rayHit.transform.gameObject.tag == "point" && go.GetComponent <Player>().MaterialCompare(rayHit.transform.gameObject.GetComponent <SpriteRenderer>().material)) { PointCaptureControl.InitializePointCaptureControl(); go.GetComponent <Player>().CreatePlayerObjectsByBeginCapture(rayHit.transform.gameObject); //StaticGameObject.endPoint = rayHit.transform.gameObject; //StaticGameObject.newLineGem = new GameObject("MyGameObject"); //StaticGameObject.LRend = StaticGameObject.newLineGem.AddComponent<LineRenderer>(); //StaticGameObject.pCol = StaticGameObject.newLineGem.AddComponent<PolygonCollider2D>(); //StaticGameObject.pointPoligonColliderList = new List<Vector2>(); //StaticGameObject.LRend.material = go.GetComponent<Player>().Material; //StaticGameObject.LRend.startWidth = 3; //StaticGameObject.LRend.positionCount = 2; //StaticGameObject.LRend.SetPosition(0, rayHit.transform.gameObject.transform.position); ps.State = new Capturing(); } } else if (Input.GetMouseButton(1)) { ps.State = new ChangePlayer(); //ps.State = new Spacing(); } }
public override void DoAction(PlayerState ps, GameObject go) { if (Input.GetMouseButtonDown(0)) { //RaycastHit2D rayHit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); RaycastHit2D rayHit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, 10, LayerMask.GetMask("point")); if (rayHit.transform != null //&& rayHit.transform.gameObject.tag == "point" && go.GetComponent <Player>().MaterialCompare(rayHit.transform.gameObject.GetComponent <SpriteRenderer>().material) && go.GetComponent <Player>().NeighborhoodPoint(rayHit.transform.position) && go.GetComponent <Player>().LastCapturePointPos != rayHit.transform.position) { StaticGameObject.LRend.SetPosition(StaticGameObject.LRend.positionCount - 1, rayHit.transform.gameObject.transform.position); if (rayHit.transform.gameObject.transform.position == StaticGameObject.endPoint.transform.position) { PointCaptureControl.ScaleDetection(rayHit.transform.position); //PointCaptureControl.MinMaxPoint(rayHit.transform.position); //StaticGameObject.pointPoligonColliderList.Add(new Vector2(rayHit.transform.gameObject.transform.position.x, rayHit.transform.gameObject.transform.position.y)); //StaticGameObject.pCol.SetPath(0, StaticGameObject.pointPoligonColliderList.ToArray()); //StaticGameObject.pCol.OverlapPoint(rayHit.transform.gameObject.transform.position); //PointCaptureControl PCC = new PointCaptureControl(StaticGameObject.pointPoligonColliderList); PointCaptureControl PCC = new PointCaptureControl(); go.GetComponent <PaperList>().ChangeCapturePointColor(go.GetComponent <Player>().Material, PCC.DetectCapturePoints()); foreach (Point p in PCC.DetectCapturePoints()) { Debug.Log(p.x + " " + p.y); } ps.State = new Waiting(); } else if (go.GetComponent <Player>().NeighborhoodPoint(rayHit.transform.position)) { StaticGameObject.LRend.positionCount += 1; PointCaptureControl.ScaleDetection(rayHit.transform.position); //PointCaptureControl.MinMaxPoint(rayHit.transform.position); //StaticGameObject.pointPoligonColliderList.Add(new Vector2(rayHit.transform.gameObject.transform.position.x, rayHit.transform.gameObject.transform.position.y)); go.GetComponent <Player>().LastCapturePointPos = go.GetComponent <Player>().LastPointPos; go.GetComponent <Player>().LastPointPos = rayHit.transform.position; } } } else if (Input.GetMouseButtonUp(1)) { Destroy(StaticGameObject.newLineGem); ps.State = new Waiting(); } else { Vector3 temp = Camera.main.ScreenToWorldPoint(Input.mousePosition); temp.z += 1.5f; StaticGameObject.LRend.SetPosition(StaticGameObject.LRend.positionCount - 1, temp); } }