2019年6月22日 星期六

Unity 學習筆記 - 根據觸碰點施加不同方向的力


直接上程式碼

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;
            }
        }
    }

沒有留言:

張貼留言

[Android][App] Pin Poke Challenge 隱私權保護政策

非常歡迎您使用「 Pin Poke Challenge 」,為了讓您能夠安心使用此 App 的各項服務與資訊,特此向您說明 Pin Poke Challenge的隱私權保護政策,以保障您的權益,請您詳閱下列內容: 一、隱私權保護政策的適用範圍 隱私權保護政策內容,包括...