Example #1
0
    void PutAnter()
    {
        if (prevEventType == EventType.MouseDown)
        {
            prevEventType = EventType.Repaint;
            return;
        }
        if (Event.current == null || Event.current.type != EventType.MouseUp)
        {
            prevEventType = EventType.MouseUp;
            return;
        }
        //マウスの位置情報の取得
        Vector3 mousePos = Event.current.mousePosition;

        //Y軸方向の補間
        mousePos.y = SceneView.currentDrawingSceneView.camera.pixelHeight - mousePos.y;
        //Ray..伸びる線のこと
        //シーンビューでマウスをクリックすると伸びる線を作成(画面には見えない)
        Ray ray = SceneView.currentDrawingSceneView.camera.ScreenPointToRay(mousePos);
        //当たり判定用の変数作成
        RaycastHit hit = new RaycastHit();

        //当たり判定の処理
        //シーンビューから見てオブジェクトに当たったら処理を開始する
        if (Physics.Raycast(ray, out hit))
        {
            //オブジェクトを作成
            GameObject obj = Instantiate(AnkerPrefab, hit.point, Quaternion.identity);
            //自分の子供にする
            obj.transform.parent = transform;

            Anker temp = obj.GetComponent <Anker>();
            temp.Init(lineScale, hit.normal);

            //でばっぐよー
            //Debug.DrawRay(hit.point,hit.normal * 10000.0f, Color.blue, 100.0f, false);

            //オブジェクトの法線の向きをそろえる
            obj.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
        }
        //現在のイベントのタイプの更新
        prevEventType = EventType.MouseDown;

        //!< 線情報を更新
        CreateLine();
    }