public void Initialize(PlayerData playerData) { _rigidbody = this.GetComponent <Rigidbody>(); _grabPoint.OnTriggerEnterAsObservable() .Select(x => x.GetComponent <IPickableObject>()) .Subscribe(x => _currentTargetPickableObject = x) .AddTo(this); _grabPoint.OnTriggerExitAsObservable() .Select(x => x.GetComponent <IPickableObject>()) .Where(x => _currentTargetPickableObject == x) .Subscribe(x => _currentTargetPickableObject = null) .AddTo(this); _attackAreaTrigger.OnTriggerEnterAsObservable() .Do(x => Debug.Log(x.name)) .Select(x => x.GetComponent <IDestructibleObject>()) .Where(x => x != null) .Subscribe(x => _targetDestructibleObjects.Add(x)) .AddTo(this); _attackAreaTrigger.OnTriggerExitAsObservable() .Select(x => x.GetComponent <IDestructibleObject>()) .Where(x => x != null && _targetDestructibleObjects.Contains(x)) .Subscribe(x => _targetDestructibleObjects.Remove(x)) .AddTo(this); _playerData = playerData; _player = Rewired.ReInput.players.GetPlayer(playerData.ID); }
public void Grab() { var pickableObject = _currentTargetPickableObject?.TryPickup(); if (pickableObject != null) { _currentPickedObject = _currentTargetPickableObject; _currentPickedObject.SetParent(_grabPoint); pickableObject.localPosition = Vector3.zero; } }
public void Throw() { _currentPickedObject.Release(_model.forward * 20.0f); _currentPickedObject.SetParent(null); _currentPickedObject = null; }