예제 #1
0
    // Ray cast to target position
    void UpdateRaycast()
    {
        // Reset selected player
        this.selectedEntity = null;

        Ray ray = cam.ViewportPointToRay(cameraMode.GetCursorPosition3D());

        // Do the raycast
        if (Physics.Raycast(ray, out raycastHit, Config.instance.raycastMaxDistance))
        {
            // TODO: Targeting info
            GameObject targetObject = raycastHit.collider.gameObject;
            var        targetEntity = targetObject.GetComponent <Entity>();

            if (targetEntity != this)
            {
                if (targetEntity != null)
                {
                    if (party == null || targetEntity.party != party)
                    {
                        crossHair.color = Color.red;
                    }
                    else
                    {
                        crossHair.color = Color.green;
                    }

                    crossHair.width  = (int)(crossHair.defaultWidth * 1.1f);
                    crossHair.height = (int)(crossHair.defaultHeight * 1.1f);

                    // Remove hitPoint Y
                    raycastHitPointOnGround = new Vector3(raycastHit.point.x, targetEntity.myTransform.position.y, raycastHit.point.z);

                    this.selectedEntity = targetEntity;
                }
                else
                {
                    crossHair.color         = crossHair.defaultColor;
                    crossHair.width         = crossHair.defaultWidth;
                    crossHair.height        = crossHair.defaultHeight;
                    raycastHitPointOnGround = raycastHit.point;
                }

                raycastSuccess = true;
            }
            else
            {
                crossHair.color = crossHair.defaultColor;
                raycastSuccess  = false;
            }
        }
        else
        {
            crossHair.color = crossHair.defaultColor;
            raycastSuccess  = false;
        }
    }