コード例 #1
0
    void UpdateAimPosition()
    {
        LayerMask ignoreCollision = player.hitScanner.IgnoreCollisionLayerMask;

        Collider[] hit = Physics.OverlapSphere(transform.position, radius, ignoreCollision);

        currentTarget = null;
        for (int i = 0; i < hit.Length; i++)
        {
            if (hit[i] != collider)
            {
                currentTarget = hit[i];
                break;
            }
        }

        Vector3 aimDesiredPosition;

        if (currentTarget == null)
        {
            aimDesiredPosition = transform.forward * radius;
        }
        else
        {
            aimDesiredPosition = currentTarget.transform.position;
        }

        currentAimPosition = Vector3.Lerp(currentAimPosition, aimDesiredPosition, reflexSpeed * Time.deltaTime);

        EventManager.Invoke <Vector3>(EventConst.GetUpdateWorldPosAim(player.ID), currentAimPosition);
    }
コード例 #2
0
    private void CalculateAimPosition()
    {
        float x_axis = input.GetAxis(RewiredConsts.Action.CameraHorizontal);
        float y_axis = input.GetAxis(RewiredConsts.Action.CameraVertical);

        pointerPosition += new Vector2(
            x_axis * mouseSensitivity,
            y_axis * mouseSensitivity);

        pointerPosition.x = Mathf.Clamp(pointerPosition.x, -Screen.width / 2, Screen.width / 2);
        pointerPosition.y = Mathf.Clamp(pointerPosition.y, -Screen.height / 2, Screen.height / 2);

        Transform cameraTr        = Camera.main.transform;
        Vector3   forwardPosition = transform.position + cameraTr.forward * aimAheadDistance;
        Vector3   xyPosition      = cameraTr.up * pointerPosition.y * offset + cameraTr.right * pointerPosition.x * offset;
        Vector3   worldPosition   = forwardPosition + xyPosition;

        Vector2 uiPosition = Camera.main.WorldToScreenPoint(worldPosition);

        EventManager.Invoke <Vector3>(EventConst.GetUpdateWorldPosAim(player.ID), worldPosition);
        EventManager.Invoke <Vector2>(EventConst.GetUpdateUIPosAim(player.ID), uiPosition);

        if (debugAim != null)
        {
            debugAim.position = worldPosition;
        }
    }
コード例 #3
0
 protected void Start()
 {
     IgnoreCollisionLayerMask = (1 << LayerMask.NameToLayer(layerMaskName));
     EventManager.Subscribe <Vector3>(EventConst.GetUpdateWorldPosAim(player.ID), (aimPosition) => UpdateAimDirection(aimPosition));
 }