コード例 #1
0
        protected virtual void Update()
        {
            // Get the main camera?
            if (mainCamera == null)
            {
                mainCamera = Camera.main;
            }

            // Begin dragging
            if (Input.GetKey(Requires) == true && down == false)
            {
                down = true;
                startMousePosition = Input.mousePosition;
            }

            // End dragging
            if (Input.GetKey(Requires) == false && down == true)
            {
                down = false;

                // Slice all Destructibles?
                if (mainCamera != null)
                {
                    var endMousePosition = Input.mousePosition;
                    var startPos         = mainCamera.ScreenToWorldPoint(startMousePosition);
                    var endPos           = mainCamera.ScreenToWorldPoint(endMousePosition);

                    D2dDestructible.SliceAll(startPos, endPos, Thickness, StampTex, Hardness);
                }
            }

            // Update indicator?
            if (down == true && mainCamera != null && IndicatorPrefab != null)
            {
                if (indicatorInstance == null)
                {
                    indicatorInstance = Instantiate(IndicatorPrefab);
                }

                var startPos   = mainCamera.ScreenToWorldPoint(startMousePosition);
                var currentPos = mainCamera.ScreenToWorldPoint(Input.mousePosition);
                var scale      = Vector3.Distance(currentPos, startPos);
                var angle      = D2dHelper.Atan2(currentPos - startPos) * Mathf.Rad2Deg;

                // Transform the indicator so it lines up with the slice
                indicatorInstance.transform.position   = new Vector3(startPos.x, startPos.y, indicatorInstance.transform.position.z);
                indicatorInstance.transform.rotation   = Quaternion.Euler(0.0f, 0.0f, -angle);
                indicatorInstance.transform.localScale = new Vector3(Thickness, scale, scale);
            }
            // Destroy indicator?
            else if (indicatorInstance != null)
            {
                Destroy(indicatorInstance.gameObject);
            }
        }