示例#1
0
    //private Vector3 prevRotationBone;

    void Start()
    {
        player = PlayerCharacterNew.Instance;

        if (rigidbody)
        {
            rigidbody.freezeRotation = true;
        }
    }
示例#2
0
    void Start()
    {
        mapLogic      = MapLogic.Instance;
        playerCharNew = PlayerCharacterNew.Instance;

        mapLogic.mapDeadSoldierBMWs.Add(this);

        minLifeTimeCounter = GeneralStats.deadNash_minLifeTime;
        maxLifeTimeCounter = GeneralStats.deadNash_maxLifeTime;
    }
示例#3
0
    // Use this for initialization
    void Start()
    {
        logTrig = GetComponent <LogicTrigger>();
        logTrig.SetEnabled(true);

        playerCharNew = PlayerCharacterNew.Instance;

        foreach (ParticleEmitter pe in rains)
        {
            pe.emit = false;
        }
    }
示例#4
0
    //

    public virtual void Init(Transform contSoldier)
    {
        controlledSoldier  = contSoldier;
        soldInfo           = controlledSoldier.GetComponent <SoldierInfo>();
        charInfo           = controlledSoldier.GetComponent <CharacterInfo>();
        soldAnimObj        = soldInfo.animObject;
        soldTr             = controlledSoldier.transform;
        soldCharController = controlledSoldier.GetComponent <CharacterController>();
        soldCharInfo       = controlledSoldier.GetComponent <CharacterInfo>();
        mapLogic           = soldInfo.mapLogic;
        playerObj          = mapLogic.player;
        playerCharNew      = mapLogic.playerCharNew;

        //mf
        soldBodyInfo = soldInfo.bodyInfo;
        //~mf
    }
 void Start()
 {
     player          = PlayerCharacterNew.Instance;
     playerCharMotor = GetComponent <CharacterMotor>();
     keys            = player.keys;
 }
示例#6
0
    public bool IsPlayerInView_ForCamp()
    {
        if (PlayerCharacterNew.Instance == null)
        {
            Debug.LogError("Player doesn't exist in map!");
            return(false);
        }

        PlayerCharacterNew player    = PlayerCharacterNew.Instance;
        GameObject         playerObj = PlayerCharacterNew.Instance.gameObject;

        Vector3    rayCastPos  = soldierEye.position;
        Quaternion rayCastRot  = soldierEye.rotation;
        float      viewRange   = mapLogic.camp_CurUpdate_SoldsViewRange * mapLogic.campSoldierViewRangeCoef;
        float      viewHalfAng = mapLogic.camp_CurUpdate_SoldsViewAngle;

        float distToPlayer = Vector3.Magnitude(playerObj.transform.position - transform.position);

        //Back
        if (player.IsVertMovementState(PlayerVertMovementStateEnum.Stand) || player.IsVertMovementState(PlayerVertMovementStateEnum.Jump))
        {
            if (distToPlayer <= SoldierStats.campSoldier_BackMaxDist)
            {
                Transform targTr = player.campViewRaysactTargets[0];

                if (!GeneralStats.IsVecInView(targTr.position, rayCastPos, rayCastRot, -viewHalfAng, viewHalfAng, viewRange)) //<--- NOT
                {
                    Vector3 raycastDirection = targTr.position - soldierEye.position;
                    float   rayDirMag        = raycastDirection.magnitude;
                    float   range            = rayDirMag;

                    if (range > viewRange)
                    {
                        return(false);
                    }

                    Vector3 raycastStart = soldierEye.position;

                    RaycastHit[] hits = Physics.RaycastAll(raycastStart, raycastDirection, range, GameGeneralInfo.Instance.SoldierCampModeViewRaycastLayer);

                    bool isHittedToObs = false;

                    foreach (RaycastHit hit in hits)
                    {
                        if (hit.transform.root == gameObject.transform)
                        {
                            continue;
                        }

                        if (hit.transform.gameObject.tag.ToLower() == GeneralStats.camWallTagName_ToLower)
                        {
                            CampWall cWall = hit.transform.gameObject.GetComponent <CampWall>();

                            if (mapLogic.CanKeepRaycastingThroughCampWall(cWall, hit.point))
                            {
                                continue;
                            }
                        }

                        isHittedToObs = true;
                    }

                    if (!isHittedToObs)
                    {
                        return(true);
                    }
                }
            }
        }

        foreach (Transform targTr in player.campViewRaysactTargets)
        {
            if (!GeneralStats.IsVecInView(targTr.position, rayCastPos, rayCastRot, -viewHalfAng, viewHalfAng, viewRange))
            {
                return(false);
            }

            Vector3 raycastDirection = targTr.position - soldierEye.position;
            float   rayDirMag        = raycastDirection.magnitude;
            float   range            = rayDirMag;

            if (range > viewRange)
            {
                return(false);
            }

            Vector3 raycastStart = soldierEye.position;

            RaycastHit[] hits = Physics.RaycastAll(raycastStart, raycastDirection, range, GameGeneralInfo.Instance.SoldierCampModeViewRaycastLayer);

            foreach (RaycastHit hit in hits)
            {
                if (hit.transform.root == gameObject.transform)
                {
                    continue;
                }

                if (hit.transform.gameObject.tag.ToLower() == GeneralStats.camWallTagName_ToLower)
                {
                    CampWall cWall = hit.transform.gameObject.GetComponent <CampWall>();

                    if (mapLogic.CanKeepRaycastingThroughCampWall(cWall, hit.point))
                    {
                        continue;
                    }
                }

                return(false);
            }
        }

        return(true);

        //CharRaycastResult charRaycastRes;

        //mapLogic.IsCharacterOkAsTarget(gameObject, playerObj, soldierEye.position, soldierEye.rotation, viewRange, -viewHalfAng, viewHalfAng, out charRaycastRes);

        //return charRaycastRes.isCharacterHitted;
    }
示例#7
0
 // Use this for initialization
 void Start()
 {
     playerCharNew = PlayerCharacterNew.Instance;
 }
示例#8
0
    void OnTriggerStay(Collider _col)
    {
        if (nowKill)
        {
            if (_col != null)
            {
                GameObject obj = _col.transform.root.gameObject;

                CharacterInfo objCharInf = obj.GetComponent <CharacterInfo>();

                if (objCharInf == null)
                {
                    return;
                }

                bool tagIsOk = true;

                if (victimsValidTags.Length > 0)
                {
                    tagIsOk = false;

                    for (int i = 0; i < victimsValidTags.Length; i++)
                    {
                        if (obj.tag.ToLower() == victimsValidTags[i].ToLower())
                        {
                            tagIsOk = true;
                            break;
                        }
                    }
                }
                else
                {
                    if (objCharInf.FightSide != victimsFightSide)
                    {
                        return;
                    }
                }

                if (tagIsOk)
                {
                    SoldierInfo soldInfo = obj.GetComponent <SoldierInfo>();

                    if (soldInfo != null)
                    {
                        DamageInfo dmg = new DamageInfo();

                        dmg.bodyPart        = SoldierBodyPart.Head;
                        dmg.BulletDirection = Vector3.down;
                        dmg.damageAmount    = 100000;
                        dmg.damageType      = DamageType.Bullet;
                        dmg.Impulse         = 200;
                        dmg.HitPoint        = soldInfo.bodyInfo.soldierHeadTr.position;

                        soldInfo.KillSoldier(dmg);

                        return;
                    }

                    PlayerCharacterNew playerChar = obj.GetComponent <PlayerCharacterNew>();

                    if (playerChar != null)
                    {
                        playerChar.KillPlayer();

                        return;
                    }
                }
            }
        }
    }
    // Use this for initialization
    void Start()
    {
        player = PlayerCharacterNew.Instance;

        camerasRoot = player.camerasRoot;
    }
示例#10
0
    public void Explode()
    {
        explosionPos = transform.position;

        DamageInfo dmg = new DamageInfo();

        if (isItPlayerGrenade && PlayerCharacterNew.Instance != null)
        {
            dmg.damageSource = PlayerCharacterNew.Instance.gameObject;
            //dmg.damageSourcePosition = PlayerCharacterNew.Instance.gameObject.transform.position;
            dmg.damageSourcePosition = transform.position;
        }
        else
        {
            dmg.damageSource         = this.gameObject;
            dmg.damageSourcePosition = transform.position;
        }

        dmg.damageType = DamageType.Explosion;

        //

        Collider[] colliders = Physics.OverlapSphere(explosionPos, Radius, ExplosionLayer);
        foreach (Collider hit in colliders)
        {
            Vector3 closestPoint = hit.ClosestPointOnBounds(explosionPos);

            if ((hit.transform.root.tag.ToLower() == GeneralStats.allyTagName_ToLower) || (hit.transform.root.tag.ToLower() == GeneralStats.enemyTagName_ToLower))
            {
                closestPoint = hit.transform.root.position;
            }

            float distance = Vector3.Distance(closestPoint, explosionPos);

            float hitRatio = Mathf.Clamp01(damageCurve.Evaluate(1 - Mathf.Clamp01(distance / Radius)));
            dmg.damageAmount = hitRatio * DamageAmount;

            if ((hit.transform.root.tag.ToLower() == GeneralStats.allyTagName_ToLower) || (hit.transform.root.tag.ToLower() == GeneralStats.enemyTagName_ToLower))
            {
                bool isSoldAddedBefore = false;

                foreach (ExplosionHittedSold ehs in hittedSolds)
                {
                    if (ehs.datSold == hit.transform.root.gameObject)
                    {
                        isSoldAddedBefore = true;

                        if (ehs.dmgAmount < dmg.damageAmount)
                        {
                            ehs.dmgAmount = dmg.damageAmount;
                        }
                    }
                }

                if (!isSoldAddedBefore)
                {
                    ExplosionHittedSold ehs = new ExplosionHittedSold();
                    ehs.datSold   = hit.transform.root.gameObject;
                    ehs.dmgAmount = dmg.damageAmount;

                    hittedSolds.Add(ehs);
                }
            }
            else
            {
                hit.SendMessageUpwards("ApplyDamage", dmg, SendMessageOptions.DontRequireReceiver);
            }
        }

        foreach (ExplosionHittedSold ehs in hittedSolds)
        {
            if (ehs != null)
            {
                dmg.damageAmount = ehs.dmgAmount;
                if (ehs.datSold != null)
                {
                    ehs.datSold.SendMessage("ApplyDamage", dmg, SendMessageOptions.DontRequireReceiver);
                }
            }
        }

        //

        colliders = Physics.OverlapSphere(explosionPos, Radius, ExplosionLayer);
        foreach (Collider hit in colliders)
        {
            if (hit.rigidbody && hit.gameObject.layer.ToString() != "Player")
            {
                hit.rigidbody.AddExplosionForce(ForcePower, explosionPos, Radius);
            }
        }

        //

        if (PlayerCharacterNew.Instance != null)
        {
            PlayerCharacterNew player = PlayerCharacterNew.Instance;

            float playerDist = (player.transform.position - explosionPos).magnitude;

            float playerCameraShakeRange = Radius * PlayerCamShakeRadiusCoef;

            float playerCameraShake_MinDistToDoMaxShakeEee = playerCameraShakeRange * playerMinDistToDoMaxShakeCoefOfRadius;


            float sourat = playerCameraShakeRange - playerDist;

            float makhraj = playerCameraShakeRange - playerCameraShake_MinDistToDoMaxShakeEee;

            float result = Mathf.Clamp01(sourat / makhraj);

            ExplosionDamageInfo expDmgInf = new ExplosionDamageInfo();
            expDmgInf.damageInfo          = dmg;
            expDmgInf.playerDamageSheddat = result;

            player.SetExplosionEffectIsNeeded(expDmgInf, true);
        }
    }
示例#11
0
    // Use this for initialization
    void Start()
    {
        mapLogic = MapLogic.Instance;

        playerCharNew = PlayerCharacterNew.Instance;
    }