コード例 #1
0
    public void MakeNormalThrowable()
    {
        InteractablePart interactablePart = gameObject.GetComponent <InteractablePart>();

        if (interactablePart != null)
        {
            Destroy(interactablePart);
            Throwable throwable = gameObject.AddComponent <Throwable>();
            gameObject.GetComponent <Interactable>().highlightOnHover = true;
        }
    }
コード例 #2
0
    // 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();
                }
            }
        }
    }
コード例 #3
0
ファイル: EnemyBase.cs プロジェクト: Stralle/GGJBreakpointers
    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();
            }
        }
    }
コード例 #4
0
    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);
        }
    }
コード例 #5
0
    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;
            }
        }
    }