// Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            ray = mainCamera.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                GameObject game = hit.collider.gameObject;

                ItemAcceptor item = game.GetComponent <ItemAcceptor>();
                if (item != null)
                {
                    Visit(item);
                }

                DoorAcceptor door = game.GetComponent <DoorAcceptor>();
                if (door != null)
                {
                    Visit(door);
                }

                ActorAcceptor actor = game.GetComponent <ActorAcceptor>();
                if (actor != null)
                {
                    Visit(actor);
                }
            }
        }
    }
Esempio n. 2
0
    public override void WorldUpdate()
    {
        if (Item != null)
        {
            if (!hasReachedMiddle)
            {
                Vector3 pos = Item.transform.position;
                pos = Vector3.MoveTowards(pos, Center.position, ConveyorInfo.GetConveyorSpeed() * Time.deltaTime);
                Item.transform.position = pos;

                if (pos == Center.position)
                    hasReachedMiddle = true;
            }
            else
            {
                Vector2 furnacePos = Instances.gridManager.GetCoords(this.gameObject);
                Vector3 pos = new Vector3(furnacePos.x, 0, furnacePos.y) + (Vector3)transform.forward;

                pos = new Vector2(Mathf.RoundToInt(pos.x), Mathf.RoundToInt(pos.z));

                if (Instances.gridManager.getObject(pos) != null)
                {
                    Debug.Log("GetObject");
                    GameObject go = Instances.gridManager.getObject(pos);
                    if (go.GetComponent<ItemAcceptor>() != null)
                    {
                        ItemAcceptor acceptor = go.GetComponent<ItemAcceptor>();
                        nextAcceptor = acceptor;
                    }
                }
                else
                    print("No Object at pos");

                if (nextAcceptor != null)
                {
                    pos = transform.position + transform.forward;
                    pos = new Vector3(Mathf.RoundToInt(pos.x),0, Mathf.RoundToInt(pos.z));

                    if (nextAcceptor.CanAccept(Item.GetComponent<Item>(), (int)pos.x, (int)pos.z))
                    {
                        if (nextAcceptor.AcceptItem(Item))
                        {
                            this.Item = null;
                            hasReachedMiddle = false;
                        }
                    }
                }

            }
        }
    }
Esempio n. 3
0
    public override void WorldUpdate()
    {
        if (nextAcceptor == null)
                {
                   Vector2 furnacePos = Instances.gridManager.GetCoords(this.gameObject);
                    Vector3 pos = new Vector3(furnacePos.x, 0, furnacePos.y) + (Vector3)transform.forward;

                    pos = new Vector2(Mathf.RoundToInt(pos.x), Mathf.RoundToInt(pos.z));

                    if (Instances.gridManager.getObject(pos) != null)
                    {
                        Debug.Log("GetObject");
                        GameObject go = Instances.gridManager.getObject(pos);
                        if (go.GetComponent<ItemAcceptor>() != null)
                        {
                            ItemAcceptor acceptor = go.GetComponent<ItemAcceptor>();

                            nextAcceptor = acceptor;
                        }
                    }
                    else
                        print("No Object at pos");
                }
                else
                {
                    if(Item == null)
                    Item = GameObject.Instantiate(ImportItem, SpawnPoint.position, Quaternion.identity) as GameObject;
                    //Item.hideFlags = HideFlags.HideInHierarchy;
                }

                     Vector3 itempos = transform.position + transform.forward;
                    itempos = new Vector3(Mathf.RoundToInt(itempos.x),0, Mathf.RoundToInt(itempos.z));

                    if (Item == null)
                        return;

                    if (nextAcceptor.CanAccept(Item.GetComponent<Item>(), (int)itempos.x, (int)itempos.z))
                    {
                        if (nextAcceptor.AcceptItem(Item))
                        {
                            Instances.moneyManager.AddFunds(-Item.GetComponent<Item>().BuyValue, transform.position);
                            this.Item = null;
                        }
                    }
    }
Esempio n. 4
0
    // Update is called once per frame
    void Update()
    {
        Ray ray = new Ray(transform.position, transform.forward);

        Debug.DrawRay(ray.origin, ray.direction * InteractDistance, Color.red, 1);
        RaycastHit hit;


        if (Physics.Raycast(ray, out hit, InteractDistance))
        {
            if (hit.collider.CompareTag("KeyItem"))
            {
                if (Input.GetKeyDown(KeyCode.Mouse0))
                {
                    {
                        GameObject game = hit.collider.gameObject;

                        ItemAcceptor item = game.GetComponent <ItemAcceptor>();
                        if (item != null)
                        {
                            Visit(item);              //対象オブジェクトにitemが含まれていればitemにアクセス
                        }
                        DoorAcceptor door = game.GetComponent <DoorAcceptor>();
                        if (door != null)
                        {
                            Visit(door);              //対象オブジェクトにdoorが含まれていればdoorにアクセス
                        }
                        NoteAcceptor note = game.GetComponent <NoteAcceptor>();
                        if (note != null)
                        {
                            Visit(note);              //対象オブジェクトにnoteが含まれていればnoteにアクセス
                        }
                    }
                }
            }
        }
    }
 public override void Visit(ItemAcceptor acceptor)
 {
     acceptor.Accept(this);
     Debug.Log("アイテムを取得する処理");
 }
Esempio n. 6
0
    public override void WorldUpdate()
    {
        if (Item != null)
        {
            if (!hasReachedMiddle)
            {
                Vector3 pos = Item.transform.position;
                pos = Vector3.MoveTowards(pos, Center.position, ConveyorInfo.GetConveyorSpeed() * Time.deltaTime);
                Item.transform.position = pos;

                if (pos == Center.position)
                    hasReachedMiddle = true;
            }
            else
            {
                if(!processed)
                    Process += Time.deltaTime;

                if (Process >= MaxProcess || processed)
                {
                    if (!processed)
                    {

                        Item item = processor.FindOutput(Item.GetComponent<Item>());
                        if (item != null)
                        {
                            Destroy(Item);
                            Instances.moneyManager.AddFunds(-ProductionCost, transform.position);
                            Item = GameObject.Instantiate(item.gameObject, OutputPoint.position, OutputPoint.rotation) as GameObject;
                            processed = true;
                            Process = 0;
                        }
                    }

                    if (nextAcceptor != null && processed)
                    {
                        Vector2 furnacePos = Instances.gridManager.GetCoords(this.gameObject);
                        Vector3 pos = new Vector3(furnacePos.x, 0, furnacePos.y) + (Vector3)transform.forward;

                        pos = new Vector3(Mathf.RoundToInt(pos.x), 0, Mathf.RoundToInt(pos.z));

                        if (nextAcceptor.CanAccept(Item.GetComponent<Item>(), (int)pos.x, (int)pos.z))
                        {
                            if (nextAcceptor.AcceptItem(Item))
                            {
                                processed = false;
                                this.Item = null;
                                hasReachedMiddle = false;
                            }
                        }
                    }
                    else
                    {
                        Vector2 furnacePos = Instances.gridManager.GetCoords(this.gameObject);
                        Vector3 pos = new Vector3(furnacePos.x, 0, furnacePos.y) + (Vector3)transform.forward;

                        pos = new Vector2(Mathf.RoundToInt(pos.x), Mathf.RoundToInt(pos.z));

                        if (Instances.gridManager.getObject(pos) != null)
                        {
                            Debug.Log("GetObject");
                            GameObject go = Instances.gridManager.getObject(pos);
                            if (go.GetComponent<ItemAcceptor>() != null)
                            {
                                ItemAcceptor acceptor = go.GetComponent<ItemAcceptor>();
                                nextAcceptor = acceptor;
                            }
                        }
                        else
                            print("No Object at pos");
                    }
                }

            }
        }
    }
Esempio n. 7
0
 // Start is called before the first frame update
 public abstract void Visit(ItemAcceptor acceptor);