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); }
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; } }
protected void Start() { IgnoreCollisionLayerMask = (1 << LayerMask.NameToLayer(layerMaskName)); EventManager.Subscribe <Vector3>(EventConst.GetUpdateWorldPosAim(player.ID), (aimPosition) => UpdateAimDirection(aimPosition)); }