Пример #1
0
    public void CmdChangeSyncVarsFromMenu(GameObject playerGO, string newName, string newColor)
    {
        TankControl player = playerGO.GetComponent <TankControl>();

        player.playerColor = (Color)typeof(Color).GetProperty(newColor.ToLowerInvariant()).GetValue(null, null);
        player.playerName  = newName;
    }
Пример #2
0
 void Start()
 {
     dc = GetComponent <DamnageControl>();
     tc = GetComponent <TankControl>();
     pm = Singleton <ParticleManager> .instance;
     tm = Singleton <TimeManager> .instance;
 }
Пример #3
0
        public static Vector3 AutoTarget(TankControl controlledTank, Transform target)
        {
            Vector3 pos         = target.position - controlledTank.transform.position;
            Vector3 relativePos = controlledTank.transform.InverseTransformVector(pos);

            return(relativePos);
        }
Пример #4
0
    void OnTriggerExit(Collider collider)
    {
        if (!PhotonNetwork.isMasterClient)
        {
            return;
        }
        Debug.Log("Detect Exit: " + collider.name);
        if (collider.name != "Bottom")
        {
            return;
        }
        TankControl enemy = collider.transform.parent.parent.GetComponent <TankControl>();

        if (enemy.gameObject.tag == "Player")
        {
            if (Enemies.Contains(enemy))
            {
                Enemies.Remove(enemy);
                OneEnemyLeft();
            }
            else
            {
                //throw new System.Exception("Collider fault");
            }
        }
    }
Пример #5
0
    void OnTriggerEnter(Collider collider)
    {
        if (!PhotonNetwork.isMasterClient)
        {
            return;
        }
        Debug.Log("Detect Entered: " + collider.name);
        //Just detect the tank's bottom, in order to prevent the same tank trigger twice.
        if (collider.name != "Bottom")
        {
            return;
        }
        TankControl enemy = collider.transform.parent.parent.GetComponent <TankControl>();

        if (enemy.gameObject.tag == "Player")
        {
            //Get intruder's flag, if isn't enemy, we don't need to count
            ZF.Flag flag = enemy.flag;
            Debug.Log("Intruder Flag:" + flag);
            if (flag != ownedTeam)
            {
                Enemies.Add(enemy);
                OneEnemyEntered();
            }
        }
    }
Пример #6
0
    private void Death()
    {
        //PhotonNetwork.Destroy(transform.parent.gameObject.GetPhotonView());
        TankControl tank = transform.parent.GetComponent <TankControl>();

        tank.gameStage = GameStage.dead;
        GameObject.Find("DNTD_WholeGameManager").GetPhotonView().RPC("RPCPlayerDeathInform", PhotonTargets.MasterClient, tank.playerID);
    }
Пример #7
0
 public BotSense(GameObject aObject)
 {
     control    = aObject.GetComponent <TankControl>();
     blackboard = aObject.GetComponent <AntAIBlackboard>();
     health     = aObject.GetComponent <Health>();
     vision     = aObject.GetComponent <Vision>();
     sensor     = aObject.GetComponent <Sensor>();
 }
Пример #8
0
 // Use this for initialization
 void Start()
 {
     dragObjects = GetComponent <DragObjects>();
     tankControl = GetComponent <TankControl>();
     pointRot    = GetComponent <PointRotate>();
     pointState  = GameObject.FindGameObjectWithTag("Weapon").GetComponent <PointState>();
     pointState.transform.Rotate(0, 0, 0);
 }
Пример #9
0
 public CanControlTankEvent(TankControl control, bool canControl)
 {
     if (control == null)
     {
         throw new ArgumentNullException(nameof(control));
     }
     ControlComponent = control;
     CanControl       = canControl;
 }
Пример #10
0
    public void ApplyBonus()
    {
        controls   = GetComponent <TankControl>();
        stockSpeed = controls.MaxVel;
        stockHP    = controls.EngMaxHP;

        controls.MaxVel   += AdditionalSpeed;
        controls.EngMaxHP += AdditionalHP;
    }
Пример #11
0
 void Focus(TankControl tank)
 {
     if (tank)
     {
         var camRef     = tank.transform.Find("CameraReference");
         var cannonMark = tank.cannonMark;
         follow.target     = camRef;
         cswitch.parentAim = cannonMark;
     }
 }
Пример #12
0
 void Start()
 {
     if (enabled)
     {
         Singleton <TankInputPlayer> .Register(this);
     }
     if (!tc)
     {
         tc = GetComponent <TankControl>();
     }
 }
Пример #13
0
    public void RPCDeadInform(int id)
    {
        TankControl deadTank = Enemies.Find(Tank => (Tank.playerID == id));

        //The dead tank is not in the occupation area
        if (deadTank == null)
        {
            return;
        }
        Enemies.Remove(deadTank);
        OneEnemyLeft();
    }
Пример #14
0
 void Start()
 {
     if (!tc)
     {
         tc = GetComponent <TankControl>();
     }
     if (!pf)
     {
         pf = GetComponent <PathFindingAgent>();
     }
     rigid = GetComponent <Rigidbody>();
     StartCoroutine(FindTargetLoop());
 }
Пример #15
0
    bool Visible(TankControl tankControl)
    {
        Ray ray = new Ray(transform.position, tankControl.transform.position - transform.position);

        if (Physics.Raycast(ray, (tankControl.transform.position - transform.position).magnitude, 1 << 10))
        {
            return(false);
        }
        else
        {
            return(true);
        }
    }
Пример #16
0
    void Start()
    {
        // GameObject marker2 = (GameObject)Instantiate(Marker);
        //marker2.transform.parent = GameObject.Find("Canvas").transform;
        //marker2.GetComponent<EnemyMarker>().obj = gameObject;
        controls = GetComponent <TankControl>();
        gun      = GetComponent <TankShoot>();


        if (TargetPlayer)
        {
            FindEnemyByTag();
        }
    }
Пример #17
0
        public void SetTankControl(string xmlFilePath, string ProgName, TankControl tankcontrol, int choice)
        {
            GetXMLInformation(xmlFilePath, ProgName, choice);
            tankcontrol.shootInterval = float.Parse(TermDataDic["shootInterval"]);
            tankcontrol.turretYSpeed  = float.Parse(TermDataDic["turretYSpeed"]);
            tankcontrol.gunXSpeed     = float.Parse(TermDataDic["gunXSpeed"]);
            tankcontrol.gunXMax       = float.Parse(TermDataDic["gunXMax"]);
            tankcontrol.gunXMin       = float.Parse(TermDataDic["gunXMin"]);

            /*tankcontrol.maxRpm = int.Parse(TermDataDic["maxRpm"]);
             * tankcontrol.motorTorque = float.Parse(TermDataDic["motorTorque"]);
             * tankcontrol.brakeTorque = float.Parse(TermDataDic["brakeTorque"]);
             * tankcontrol.steeringSpeed = float.Parse(TermDataDic["steeringSpeed"]);
             * tankcontrol.maxSteering = float.Parse(TermDataDic["maxSteering"]);
             * tankcontrol.steeringBack = float.Parse(TermDataDic["steeringBack"]);*/
        }
Пример #18
0
        private void CollectItem(MagnetNode aTankNode, MagnetableNode aItemNode)
        {
            TankControl control = aTankNode.entity.GetComponent <TankControl>();

            if (control)
            {
                switch (aItemNode.Magnetable.kind)
                {
                case ItemKind.Gun:
                    if (control.Tower.HasBomb)
                    {
                        // Сбрасываем с бота бомбу если есть.
                        DropItem(ItemKind.Bomb, aTankNode.entity.Position);
                        control.Tower.HasBomb = false;
                    }
                    control.Tower.HasGun = true;
                    break;

                case ItemKind.Bomb:
                    if (control.Tower.HasGun)
                    {
                        // Сбрасываем с бота пушку если есть.
                        DropItem(ItemKind.Gun, aTankNode.entity.Position);
                        control.Tower.HasGun = false;
                    }

                    if (control.Tower.HasAmmo)
                    {
                        // Сбрасываем с бота патроны если есть.
                        DropItem(ItemKind.Ammo, aTankNode.entity.Position);
                        control.Tower.AmmoCount = 0;
                    }
                    control.Tower.HasBomb = true;
                    break;

                case ItemKind.Ammo:
                    control.Tower.AmmoCount = 3;
                    break;

                case ItemKind.Heal:
                    aTankNode.entity.GetComponent <Health>().HP += 1.0f;
                    break;
                }
            }
        }
Пример #19
0
    public bool Predict(float stepT, int maxIterations, out TankControl tc, out Vector3 endPoint)
    {
        float speed      = shell.GetComponent <ShellControl>().speed;
        float gravity    = shell.GetComponent <CenterGravity>().multiplier *CenterGravity.g;
        var   startPoint = cannonMark.position;
        var   velocity   = cannonMark.forward * speed;

        for (int i = 0; i < maxIterations; i++)
        {
            Vector3 est        = startPoint + stepT * velocity;
            Vector3 averageG   = (RelativeSystemControl.DownAt(startPoint) + RelativeSystemControl.DownAt(est)).normalized * gravity;
            Vector3 estDescend = averageG * stepT * stepT / 2f;
            Vector3 estDv      = averageG * stepT;
            est += estDescend;
            Ray        ray = new Ray(startPoint, est - startPoint);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, (est - startPoint).magnitude, (1 << 10) + (1 << 13)))
            {
                Debug.DrawLine(startPoint, hit.point, Color.cyan);
                if (hit.collider.gameObject.layer == 10)
                {//terrain
                    tc       = null;
                    endPoint = hit.point;
                    return(false);
                }
                else if (hit.collider.gameObject.layer == 13)
                {//tank
                    tc       = FindTankControl(hit.collider.transform);
                    endPoint = hit.point;
                    return(true);
                }
            }
            else
            {
                Debug.DrawLine(startPoint, est);
                startPoint = est;
                velocity  += estDv;
            }
        }
        tc       = null;
        endPoint = startPoint;
        return(false);
    }
Пример #20
0
    void Awake()
    {
        hp = Player.GetComponent <HealthManager>();

        controls = Player.GetComponent <TankControl>();

        PlayerName.text = hp.Name;

        if (Player.GetComponent <PhotonView>().owner.GetTeam() == PunTeams.Team.red)
        {
            PlayerName.color = Color.red;
            PlayerHp.color   = Color.red;
        }
        else if (Player.GetComponent <PhotonView>().owner.GetTeam() == PunTeams.Team.blue)
        {
            PlayerName.color = Color.blue;
            PlayerHp.color   = Color.blue;
        }
    }
Пример #21
0
    IEnumerator FindTargetLoop()
    {
        while (true)
        {
            yield return(0);

            if (!attackTarget || attackTarget.isDestroyed || !Visible(attackTarget) || refindTimer < 0)
            {
                refindTimer  = 10;
                attackTarget = FindTankTarget();
                if (attackTarget == null)
                {
                    yield return(new WaitForSeconds(2));

                    captureTarget = FindPointTarget();
                }
            }
        }
    }
Пример #22
0
    public static TankControl FindTankControl(Transform child)
    {
        TankControl tc = child.GetComponent <TankControl>();

        if (tc)
        {
            return(tc);
        }
        else
        {
            if (child.parent)
            {
                return(FindTankControl(child.parent));
            }
            else
            {
                return(null);
            }
        }
    }
    public override void OnServerAddPlayer(NetworkConnection conn)
    {
        base.OnServerAddPlayer(conn);
        foreach (var o in conn.clientOwnedObjects)
        {
            if (o.gameObject.tag == "Player")
            {
                Debug.Log("are the tank renderers found?");
                Debug.Log(o.gameObject.transform.Find("TankRenderers"));

                Debug.Log("Found a player in the client");
                string newName  = PlayerPrefs.GetString("playerName");
                string newColor = PlayerPrefs.GetString("playerColor");
                Debug.Log("Preferences values are: " + newName + " , " + newColor);

                TankControl t = o.gameObject.GetComponent <TankControl>();
                t.playerName  = newName;
                t.playerColor = (Color)typeof(Color).GetProperty(newColor.ToLowerInvariant()).GetValue(null, null);
            }
        }
    }
Пример #24
0
    TankControl FindTankTarget()
    {
        float       minDistance = 10000;
        TankControl min         = null;

        foreach (var tankControl in Singleton <TankManager> .instance.tanks)
        {
            var teamMark = tankControl.GetComponent <TeamMark>();
            if (teamMark.team != GetComponent <TeamMark>().team)
            {
                if (!tankControl.isDestroyed && Visible(tankControl))
                {
                    var distance = (tankControl.transform.position - transform.position).magnitude;
                    if (distance < minDistance)
                    {
                        minDistance = distance;
                        min         = tankControl;
                    }
                }
            }
        }
        return(min);
    }
Пример #25
0
        void Awake()
        {
            this.gameObject.layer = 9;             // Layer9 >> for wheels.
            thisRigidbody         = GetComponent <Rigidbody> ();
            // Set direction.
            if (transform.localPosition.y > 0.0f)
            {
                isLeft = true;
            }
            else
            {
                isLeft = false;
            }
            // Get initial rotation.
            thisTransform   = transform;
            parentTransform = thisTransform.parent;
            angles          = thisTransform.localEulerAngles;
            // Find controlScript.
            tankControl = parentTransform.parent.parent.GetComponent <TankControl>();
            // Set maxAngVelocity.
            float radius = GetComponent <SphereCollider> ().radius;

            maxAngVelocity = Mathf.Deg2Rad * ((tankControl.maxSpeed / (2.0f * Mathf.PI * radius)) * 360.0f);
        }
Пример #26
0
 void Awake()
 {
     tBody     = GetComponent <Rigidbody>();
     controls  = GetComponent <TankControl>();
     hpManager = GetComponent <HealthManager>();
 }
Пример #27
0
 public StateShot(GameObject aObject) : base("Shot")
 {
     _control = aObject.GetComponent <TankControl>();
 }
Пример #28
0
 public StateMove(GameObject aObject, string aStateName) : base(aStateName)
 {
     _control    = aObject.GetComponent <TankControl>();
     _blackboard = aObject.GetComponent <AntAIBlackboard>();
     _magnet     = aObject.GetComponent <Magnet>();
 }
Пример #29
0
    float timeSvrRpcLast = 0; //когда последний раз сервер слал обновление картинки

    #endregion Fields

    #region Methods

    // Use this for initialization
    void Start()
    {
        tankControl = GetComponent<TankControl>();
    }
Пример #30
0
 public bool CanSee(TankControl t1, TankControl t2)
 {
     return(CanSee(t1.tankInformation.x, t1.tankInformation.z, t1.tankInformation.rotation, t2.tankInformation.x, t2.tankInformation.z));
 }
Пример #31
0
 public StateDetonateBomb(GameObject aObject) : base("DetonateBomb")
 {
     _control = aObject.GetComponent <TankControl>();
 }