// Update is called once per frame void Update() { // 移動中 if (mMovePointX != float.MaxValue) { Movement(); } // debug if (Input.GetKeyUp("mouse 0")) { Vector3 tmp = PointaToPosition.ChangeToPostion(Input.mousePosition); if (tmp.y > mTouchLimitY) { return; } if (Mathf.Abs(tmp.x - transform.position.x) > mIgnoreDistance) { mMovePointX = tmp.x; } else { ChangeAttack(); } } if (Input.touchCount > 0) { Touch touch = Input.GetTouch(0); Vector3 tmp = PointaToPosition.ChangeToPostion(new Vector3(touch.position.x, 0f, 0f)); if (tmp.y > mTouchLimitY) { return; } // 移動判定 if (Mathf.Abs(tmp.x - transform.position.x) > mIgnoreDistance) { mMovePointX = tmp.x; } else // 狙いうちに移行 { ChangeAttack(); } } }
void Preparation() { mFirstLine.enabled = true; // 角度をつける Vector3 diff = PointaToPosition.ChangeToPostion(Input.mousePosition) - transform.position; float angle = Mathf.Atan2(diff.x, diff.y); angle = Mathf.Rad2Deg * angle; // rad→角度 angle = Mathf.Clamp(angle, (-1) * mAngleLimit, mAngleLimit); transform.rotation = Quaternion.AngleAxis(angle, Vector3.back); // ガイドラインが反射する可能性を考慮 Vector2 vec2Pos = new Vector2(transform.position.x, transform.position.y); RaycastHit2D hit = Physics2D.Raycast(vec2Pos, Vec3ToVec2.GenVecFrom2Points(mTargetTrans.position, transform.position).normalized, Vec3ToVec2.CalcDistanceOn2D(transform.position, mTargetTrans.position)); // 反射したかを考えてガイドラインを表示 if (hit.collider != null) { // 一本目の線 Vector3 middle = new Vector3(hit.point.x, hit.point.y); mFirstLine.SetPosition(0, transform.position + Vector3.back); mFirstLine.SetPosition(1, middle + Vector3.back); // 二本目の線 float remainLength = Vec3ToVec2.CalcDistanceOn2D(transform.position, mTargetTrans.position) - Vec3ToVec2.CalcDistanceOn2D(transform.position, middle); Vector2 tmp = Vec3ToVec2.GenVecFrom2Points(mTargetTrans.position, transform.position).normalized; Vector3 reflectAngle = new Vector3(tmp.x * (-1), tmp.y, 0); mObjectIncludeLine.SetActive(true); mObjectIncludeLine.GetComponent <LineRenderer> ().SetPosition(0, middle + Vector3.back); mObjectIncludeLine.GetComponent <LineRenderer> ().SetPosition(1, middle + reflectAngle.normalized * remainLength); } else { mFirstLine.SetPosition(0, transform.position + Vector3.back); mFirstLine.SetPosition(1, mTargetTrans.position + Vector3.back); mObjectIncludeLine.SetActive(false); } }
// Update is called once per frame void Update() { Vector3 point = PointaToPosition.ChangeToPostion(Input.mousePosition); point = new Vector3(point.x, point.y, 0f); if (Input.GetKey("mouse 0") && Vector3.Distance(point, GameObject.FindGameObjectWithTag("Player").transform.position) <= mNotifiRadius) { isPulling = true; PullProcess(); } else if (isPulling) // 離した(上のif文に入ってないので) { ChangeMoving(); } }