void HandleInput()
    {
        float x = Input.GetAxisRaw("Horizontal");
        float y = Input.GetAxisRaw("Vertical");

        xInput = x;
        yInput = y;


        if (Input.GetKeyDown("space") && !repairing)
        {
            repairing = true;
        }

        if (Input.GetKeyUp("space"))
        {
            repairing = false;

            if (repairTarget)
            {
                DestructibleBehavior db = repairTarget.GetComponent <DestructibleBehavior>();
                db.setRepairing(false);
            }
        }
    }
 void Repair()
 {
     if (repairing && repairTarget)
     {
         DestructibleBehavior db = repairTarget.GetComponent <DestructibleBehavior>();
         Debug.Log("Player is setting block repairing");
         db.setRepairing(true);
     }
 }
示例#3
0
    private void HandleAttack()
    {
        DestructibleBehavior db = target.GetComponent <DestructibleBehavior>();

        if (db)
        {
            db.HandleAttack(damage, gameObject);

            state = "idle";
        }
    }
    private void removeCurrentRepairTarget()
    {
        if (repairTarget)
        {
            DestructibleBehavior db = repairTarget.GetComponent <DestructibleBehavior>();
            if (db)
            {
                db.setRepairTarget(false);
                db.setRepairing(false);
            }

            repairTarget = null;
        }
    }
    public void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Destructible")
        {
            removeCurrentRepairTarget();

            repairTarget = other.gameObject;

            DestructibleBehavior db = repairTarget.GetComponent <DestructibleBehavior>();

            if (db)
            {
                db.setRepairTarget(true);
            }
        }
    }
示例#6
0
    public void HandleMove()
    {
        float step = speed * Time.deltaTime;

        if (isDisappointed)
        {
            transform.position = Vector3.MoveTowards(transform.position, origin, step * .5f);
            return;
        }

        if (this.target)
        {
            DestructibleBehavior db = target.GetComponent <DestructibleBehavior>();

            if (db)
            {
                if (db.getHp() > 0)
                {
                    float distance = Vector3.Distance(transform.position, target.transform.position);
                    if (distance > distanceFromWall)
                    {
                        transform.position = Vector3.MoveTowards(transform.position, target.transform.position, step);
                    }
                    else
                    {
                        HandleAttack();
                    }
                }
                else
                {
                    transform.position = Vector3.MoveTowards(transform.position, lootTarget.transform.position, step);

                    if (hasGold)
                    {
                        transform.position = Vector3.MoveTowards(transform.position, origin, step * 2);
                    }
                }
            }
        }
    }