public void MakeNormalThrowable() { InteractablePart interactablePart = gameObject.GetComponent <InteractablePart>(); if (interactablePart != null) { Destroy(interactablePart); Throwable throwable = gameObject.AddComponent <Throwable>(); gameObject.GetComponent <Interactable>().highlightOnHover = true; } }
// Update is called once per frame void Update() { if (IsGameOnPause()) { return; } //----------- Camera movement logic //The camera is moving with the right mouse button if (Input.GetMouseButtonDown(0) && _isSecondPhaseActive) { moveStartPosition = GetWorldPosition(groundZ); } if (Input.GetMouseButton(0) && _isSecondPhaseActive) { Camera activeCamera = GetActiveCamera(); Vector3 direction = moveStartPosition - GetWorldPosition(groundZ); activeCamera.transform.position += direction; } if (GameRulesManager.Instance.GamePhase == EGamePhase.Defend) { return; } if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject()) { Debug.Log("MouseControlManager: mouse pressed"); RaycastHit2D hit = Physics2D.Raycast(_camera.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); if (hit.collider != null) { Debug.Log("MouseControlManager: hit target: " + hit.collider.name); InteractablePart interactable = hit.collider.gameObject.GetComponent <InteractablePart>(); Trap trap = hit.collider.gameObject.GetComponent <Trap>(); //if (interactable != null) //{ // IDestructible destructible = interactable.GetMainGameObject().GetComponent<Loot>() as IDestructible; // if (destructible != null) // { // destructible.DestroyAndGetResources(); // } //} if (trap != null) { trap.PlayerInteract(); } } } }
private void OnCollisionEnter2D(Collision2D collision) { Debug.Log("EnemyBAse: OnCollisionEnter2D"); // todo::get dumage from trap and apply it Trap trap = collision.gameObject.GetComponent <Trap>(); if (trap && trap.CanDealDamage()) { TakeDamage(trap.DamageDealt); } InteractablePart interactible = collision.gameObject.GetComponent <InteractablePart>(); if (interactible) { Loot loot = interactible.GetMainGameObject().GetComponent <Loot>(); if (loot) { loot.DestroyByEnemy(); } } }
public void OnTriggerEnter2D(Collider2D collision) { InteractablePart _resource = collision.GetComponent <InteractablePart>(); Trap _trap = collision.gameObject.GetComponent <Trap>(); if (_resource) { IDestructible destructible = _resource.GetMainGameObject().GetComponent <Loot>() as IDestructible; if (destructible != null) { if (destructible.DestroyAndGetResources()) { _animator.SetTrigger("TriggerSmash"); } } } if (_trap != null) { _isInteractingWithTrap = true; //Select the closest trap if (_selectedTrap) { float distanceToCurrentTrap = Vector2.Distance(_selectedTrap.transform.position, gameObject.transform.position); float distanceToNewTrap = Vector2.Distance(_trap.transform.position, gameObject.transform.position); if (distanceToNewTrap < distanceToCurrentTrap) { //The new trap is the closest one now, select it and deselect the old one DeselectTrap(_selectedTrap); _selectedTrap = _trap; } } else { _selectedTrap = _trap; } _trap.SetUIFeedbackActive(true); } }
private void ApplyObjectiveSettings() { if (subjectGameObject != null) { switch (objectiveType) { case AllObjetiveTypes.MoveToLocation: InteractablePart partMoveToLocation = subjectGameObject.GetComponent <InteractablePart>(); if (partMoveToLocation == null) { partMoveToLocation = subjectGameObject.AddComponent <InteractablePart>(); } partMoveToLocation.ObjectiveType = PartObjectiveTypes.MoveToLocation; partMoveToLocation.beginningRigidbodyState = beginningRigidbodyState; partMoveToLocation.endingRigidbodyState = endingRigidbodyState; partMoveToLocation.endingLocation = endingLocation; partMoveToLocation.showEndPointOutline = showEndPointOutline; partMoveToLocation.acceptableDegreesFromEndPoint = acceptableDegreesFromEndPoint; partMoveToLocation.acceptableMetersFromEndPoint = acceptableMetersFromEndPoint; partMoveToLocation.rotationAxisToCheck = rotationAxisToCheck; partMoveToLocation.partObjectiveSettings = partObjectiveSettings; objectiveCommands = partMoveToLocation; break; case AllObjetiveTypes.MoveFromLocation: InteractablePart partMoveFromLocation = subjectGameObject.GetComponent <InteractablePart>(); if (partMoveFromLocation == null) { partMoveFromLocation = subjectGameObject.AddComponent <InteractablePart>(); } partMoveFromLocation.ObjectiveType = PartObjectiveTypes.MoveFromLocation; partMoveFromLocation.beginningRigidbodyState = beginningRigidbodyState; partMoveFromLocation.endingRigidbodyState = endingRigidbodyState; partMoveFromLocation.endingLocation = endingLocation; partMoveFromLocation.showEndPointOutline = showEndPointOutline; partMoveFromLocation.acceptableDegreesFromEndPoint = acceptableDegreesFromEndPoint; partMoveFromLocation.acceptableMetersFromEndPoint = acceptableMetersFromEndPoint; partMoveFromLocation.rotationAxisToCheck = rotationAxisToCheck; partMoveFromLocation.partObjectiveSettings = partObjectiveSettings; objectiveCommands = partMoveFromLocation; break; case AllObjetiveTypes.Interaction: InteractableObjective interactableObjective = subjectGameObject.GetComponent <InteractableObjective>(); if (interactableObjective == null) { interactableObjective = subjectGameObject.AddComponent <InteractableObjective>(); } interactableObjective.requireTriggerPress = requireTriggerPress; interactableObjective.hapticFeedback = hapticFeedback; objectiveCommands = interactableObjective; break; case AllObjetiveTypes.PlayerMovement: MovementObjective movementObjective = subjectGameObject.GetComponent <MovementObjective>(); if (movementObjective == null) { movementObjective = subjectGameObject.AddComponent <MovementObjective>(); } movementObjective.vrCollider = vrCollider == null?GameObject.Find("HeadCollider").GetComponent <Collider>() : vrCollider; movementObjective.teleportPoint = teleportPoint; movementObjective.colliderRadius = colliderRadius; movementObjective.colliderHeight = colliderHeight; objectiveCommands = movementObjective; break; case AllObjetiveTypes.ToolMotion: ToolObjective toolObjective = subjectGameObject.GetComponent <ToolObjective>(); if (toolObjective == null) { toolObjective = subjectGameObject.AddComponent <ToolObjective>(); } toolObjective.rotationPoint = rotationPoint; toolObjective.rotationDirection = rotationDirection; toolObjective.requiredDegreesOfRotation = requiredDegreesOfRotation; toolObjective.numberOfRotatations = numberOfRotatations; toolObjective.rotationSpeed = rotationSpeed; objectiveCommands = toolObjective; break; case AllObjetiveTypes.None: default: Debug.Log("Objective " + title + " has no type."); objectiveCommands = null; break; } } }