public override void ShootKey(Transform shootPointObj, GameObject weaponParent)
    {
        //到达设置的规定的射速时间
        if (_fireRateTime >= (1.0f / WeaponProperty.FireRate) || (0 == _fireRateTime))
        {
            Debug.Log("ddddddddddddddddddddddddddddd::+" + WeaponProperty.FireRate);
            if (!_bulletPrefabs)
            {
                string path = GameManager.Instance.GetBulletProPerty(WeaponProperty.BulletId).PrefabsPath;
                _bulletPrefabs      = Resources.Load(path) as GameObject;
                _bulletPrefabs.name = PrefabsName.BulletPrefabName;
            }

            if (_bulletPrefabs)
            {
                //1)加载产生子弹
                GameObject BulletPrefabObj = GameObjPool.GetInstance().InstantiateObject(_bulletPrefabs, shootPointObj.position, shootPointObj.rotation);

                Bullet buttleObj = BulletPrefabObj.GetComponent <Bullet>();
                buttleObj.Init(WeaponProperty.BulletId, weaponParent);
                buttleObj.SetSplatData(SplatId++, WeaponProperty.ShootRange, ColorMask);
                if (SplatId == SplatManagerSystem.instance.SplatSample_X.Count)
                {
                    SplatId = 0;
                }

                Rigidbody r = buttleObj.GetComponent <Rigidbody>();
                r.velocity = shootPointObj.forward * WeaponProperty.ShootSpeed;
                //  Debug.Log("shootPointObj.parent::" + data + ",shootPointObj.parent.name:::" + shootPointObj.parent.name);
                //   Debug.Log("Rigidbody.forward:::" + shootPointObj.forward);

                //2)相对应能量的消耗
                ConsumeEnergy(WeaponProperty.MinConsumeEnergy);
            }
            _fireRateTime = 0;
        }
        _fireRateTime += FrameSyncManager.DeltaTime;
    }
Ejemplo n.º 2
0
    // Update is called once per frame
    public void InitializeAgent()
    {
        if (s_GameObjPool == null)
        {
            s_GameObjPool = new GameObjPool();
        }

        if (resElevator == null)
        {
            resElevator = (GameObject)Resources.Load("Elevator/elevator_unit");
        }

        if (resfloor == null)
        {
            resfloor = (GameObject)Resources.Load("Elevator/build_floor");
        }


        if (academy == null)
        {
            academy = FindObjectOfType <ElevatorAcademy>();
        }
    }
Ejemplo n.º 3
0
    public void InitEnv()
    {
        if (s_GameObjPool == null)
        {
            s_GameObjPool = new GameObjPool();
        }

        if (resElevator == null)
        {
            resElevator = (GameObject)Resources.Load("Elevator/elevator_unit");
        }

        if (resfloor == null)
        {
            resfloor = (GameObject)Resources.Load("Elevator/build_floor");
        }

        if (academy == null)
        {
            academy = FindObjectOfType <ElevatorAcademy>();
        }


        callReqReserveCar = new Elevator[ElevatorAcademy.floors, 2];

        ElevatorPassenger.InitPooler();


        centerCtrlAgent = gameObject.GetComponent <ElevatorCtrlCenterAgent>();



        if (centerCtrlAgent != null)
        {
            resElevator.GetComponent <Elevator>().enabled = false;
        }


        //if (centerCtrlAgent == null)
        {
            var brainObj = academy.gameObject.transform.Find("ElevatorctrlBrain");

            if (brainObj)
            {
                elevatorBrain = brainObj.GetComponent <MLAgents.Brain>();
            }
        }



        restPassinger    = ElevatorAcademy.passinger;
        destPassinger    = 0;
        simulattion_time = 0;
        addPassinger     = 0;


        int dist = 4;
        int rest = ElevatorAcademy.elevatorCount % 2;
        int mok  = ElevatorAcademy.elevatorCount / 2;

        Vector3 startPos = transform.position;

        if (rest < 0.5f)
        {
            mok     -= 1;
            startPos = transform.position - (Vector3.right * dist * mok) - (Vector3.right * (dist / 2));
        }
        else
        {
            startPos = transform.position - (Vector3.right * dist * mok);
        }

        startPos += Vector3.back;


        for (int i = 0; i < ElevatorAcademy.elevatorCount; ++i)
        {
            if (i < listElve.Count)
            {
                listElve[i].Init();
                continue;
            }

            GameObject ele = (GameObject)Instantiate(resElevator, this.transform);

            ele.transform.position = startPos + (Vector3.right * dist * i);
            var el = ele.GetComponent <Elevator>();
            listElve.Add(el);
            el.InitFloor(i, ElevatorAcademy.floors);


            var agent = ele.GetComponent <Elevator>();
            agent.enabled = false;
            el.agent      = centerCtrlAgent;
        }

        for (int i = 0; i < ElevatorAcademy.floors; ++i)
        {
            if (i < listFloor.Count)
            {
                listFloor[i].Init();
                continue;
            }


            GameObject fl = (GameObject)Instantiate(resfloor, this.transform);
            fl.transform.position = transform.position + (Vector3.up * ElevatorAcademy.height * i);
            fl.GetComponent <Buildfloor>().SetFloor(i, this);
            listFloor.Add(fl.GetComponent <Buildfloor>());
        }

        startTime = Time.fixedTime;
    }
Ejemplo n.º 4
0
    public void InitEnv()
    {
        if (s_GameObjPool == null)
        {
            s_GameObjPool = new GameObjPool();
        }

        if (resElevator == null)
        {
            resElevator = (GameObject)Resources.Load("Elevator/elevator_unit");
        }

        if (resfloor == null)
        {
            resfloor = (GameObject)Resources.Load("Elevator/build_floor");
        }

        if (academy == null)
        {
            academy = FindObjectOfType <ElevatorAcademy>();
        }


        callReqReserveCar = new ElevatorAgent[ElevatorAcademy.floors, 2];

        ElevatorPassenger.InitPooler();


        //if (elevatorBrain == null)
        //    elevatorBrain = academy.transform.Find("ElevatorBrain").GetComponent<Brain>();



        restPassenger    = ElevatorAcademy.passenger;
        destPassenger    = 0;
        simulattion_time = 0;
        addPassenger     = 0;
        scenario_index   = 0;


        int dist = 4;
        int rest = ElevatorAcademy.elevatorCount % 2;
        int mok  = ElevatorAcademy.elevatorCount / 2;

        Vector3 startPos = transform.position;

        if (rest < 0.5f)
        {
            mok     -= 1;
            startPos = transform.position - (Vector3.right * dist * mok) - (Vector3.right * (dist / 2));
        }
        else
        {
            startPos = transform.position - (Vector3.right * dist * mok);
        }

        startPos += Vector3.back;


        for (int i = 0; i < ElevatorAcademy.elevatorCount; ++i)
        {
            if (i < listElve.Count)
            {
                listElve[i].Init();
                continue;
            }

            GameObject ele = (GameObject)Instantiate(resElevator, this.transform);
            ele.transform.position = startPos + (Vector3.right * dist * i);

            var agent = ele.GetComponent <ElevatorAgent>();
            listElve.Add(agent);
            //agent.GiveBrain(elevatorBrain);
            agent.InitFloor(i, ElevatorAcademy.floors);
            //agent.agentParameters.agentCameras[0] = GameObject.Find("agent_cam").GetComponent<Camera>();
            agent.AgentReset();
        }

        for (int i = 0; i < ElevatorAcademy.floors; ++i)
        {
            if (i < listFloor.Count)
            {
                listFloor[i].Init();
                continue;
            }


            GameObject fl = (GameObject)Instantiate(resfloor, this.transform);
            fl.transform.position = transform.position + (Vector3.up * ElevatorAcademy.height * i);
            fl.GetComponent <Buildfloor>().SetFloor(i, this);
            listFloor.Add(fl.GetComponent <Buildfloor>());
        }

        startTime = Time.fixedTime;
    }
Ejemplo n.º 5
0
    public void OnTriggerEnter(Collider other)
    {
        //   Debug.Log("other_OnTriggerEnterOnTriggerEnter::" + other.name);
        if (_parentObj == other.gameObject || other.CompareTag(Tags.Weaponry) || !gameObject.activeInHierarchy)
        {
            return;
        }

        //1)如果是子弹射击到玩家
        if (other.CompareTag(Tags.Player))
        {
            Avatar AvatarObj = other.GetComponent <Avatar>();
            if (AvatarObj && (AvatarObj.ItemType != (int)GameManager.Instance.TeamId))
            {
                AvatarObj.TargetAttack(_damage);
            }
            Destroy(AvatarObj);
            return;
        }

        RaycastHit hit;
        Ray        ray       = new Ray(_beforePoint, (gameObject.transform.position - _beforePoint));
        int        layerMask = LayerMask.GetMask(Layers.Render);

        //layerMask = ~layerMask;
        Debug.DrawRay(_beforePoint, /* Vector3.up*/ (gameObject.transform.position - _beforePoint), Color.yellow, 20f);
        if (!Physics.Raycast(ray, out hit,
                             (Vector3.Distance(gameObject.transform.position, _beforePoint)), layerMask))
        {
            return;
        }

        if (hit.collider == null)
        {
            Debug.LogError("bullet_onTriggerEnter未检测到数据!::" + other.name);
            return;
        }

        //!开始油漆喷射
        //CBGlobalEventDispatcher.Instance.TriggerEvent<RaycastHit>(DefineEventId.SprayPaintEvent, hitInfo);
        //GameObjPool.GetInstance().DestroyObject(gameObject);
        //ResetData();
        ////  Destroy(gameObject);
        //Resources.UnloadUnusedAssets();

        _splatsX = SplatManagerSystem.instance.splatsX;
        _splatsY = SplatManagerSystem.instance.splatsY;

        Vector3 leftVec   = Vector3.Cross(hit.normal, Vector3.up);
        float   randScale = Random.Range(0.5f, 1.5f);

        GameObject newSplatObject = new GameObject();

        newSplatObject.transform.position = hit.point;
        if (leftVec.magnitude > 0.001f)
        {
            newSplatObject.transform.rotation = Quaternion.LookRotation(leftVec, hit.normal);
        }
        // newSplatObject.transform.RotateAround(hit.point, hit.normal, Random.Range(-180, 180));
        // newSplatObject.transform.localScale = new Vector3(randScale, randScale * 0.5f, randScale) * _splatScale;
        newSplatObject.transform.RotateAround(hit.point, hit.normal, -180);
        newSplatObject.transform.localScale = new Vector3(4f, 0.75f, 4f) * _splatScale;

        Splat newSplat;

        newSplat.splatMatrix = newSplatObject.transform.worldToLocalMatrix;
        newSplat.channelMask = _splatColor;

        // Debug.Log(" newSplat.splatMatrix::::" + newSplat.splatMatrix);

        float splatscaleX = 1.0f / _splatsX;
        float splatscaleY = 1.0f / _splatsY;
        float splatsBiasX = Mathf.Floor(Random.Range(0, _splatsX * 0.99f)) / _splatsX;
        float splatsBiasY = Mathf.Floor(Random.Range(0, _splatsY * 0.99f)) / _splatsY;

        //固定模式
        newSplat.scaleBias = new Vector4(splatscaleX, splatscaleY, _splatSampleX, _splatSampleY);
        //  Debug.Log("newSplat.scaleBias:::" + newSplat.scaleBias + ",::"+ splatsBiasY);

        if (_hitObj != hit.transform.gameObject && !hit.transform.gameObject.tag.Contains("Weaponry"))
        {
            // Debug.Log("name::" + hit.transform.gameObject.name);
            _id     = hit.transform.GetComponent <SplatManager>().ObjectId;
            _hitObj = hit.transform.gameObject;
        }

        SplatManagerSystem.instance.AddSplat(_id, newSplat);

        GameObjPool.GetInstance().DestroyObject(gameObject);
        ResetData();
        GameObject.Destroy(newSplatObject);
    }