直接上程式碼
private Rigidbody2D m_rigidbody2D;
// Use this for initialization
void Start () {
m_rigidbody2D =
GetComponent<Rigidbody2D>();
}
private void FixedUpdate()
{
if (Input.touchCount > 0 && flag)
{
// 獲取觸碰點的座標(此為螢幕座標)
float x_touch_position = Input.GetTouch(0).position.x;
float y_touch_position = Input.GetTouch(0).position.y;
// 世界座標轉換為螢幕座標 (球)
Vector3 tempPosition =
Camera.main.WorldToScreenPoint(m_rigidbody2D.transform.position);
// 欲施加的 X 方向向量
float vx = x_touch_position - tempPosition.x;
// 欲施加的 Y 方向向量
float vy =
y_touch_position - tempPosition.y;
if (vx >=0 && vy>=0)
{
myAngle = Vector2.Angle(new Vector2(0, 1), new Vector2(vx, vy));
m_rigidbody2D.rotation = 90f -
myAngle;
m_rigidbody2D.AddRelativeForce(Vector2.right
* speed);
flag = false;
}
else if (vx < 0 && vy >= 0)
{
myAngle = Vector2.Angle(new Vector2(0, 1), new Vector2(vx, vy));
m_rigidbody2D.rotation = 90f +
myAngle;
m_rigidbody2D.AddRelativeForce(Vector2.right * speed);
flag = false;
}
}
}
沒有留言:
張貼留言