//private Vector3 prevRotationBone; void Start() { player = PlayerCharacterNew.Instance; if (rigidbody) { rigidbody.freezeRotation = true; } }
void Start() { mapLogic = MapLogic.Instance; playerCharNew = PlayerCharacterNew.Instance; mapLogic.mapDeadSoldierBMWs.Add(this); minLifeTimeCounter = GeneralStats.deadNash_minLifeTime; maxLifeTimeCounter = GeneralStats.deadNash_maxLifeTime; }
// Use this for initialization void Start() { logTrig = GetComponent <LogicTrigger>(); logTrig.SetEnabled(true); playerCharNew = PlayerCharacterNew.Instance; foreach (ParticleEmitter pe in rains) { pe.emit = false; } }
// 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; }
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; }
// Use this for initialization void Start() { playerCharNew = PlayerCharacterNew.Instance; }
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; }
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); } }
// Use this for initialization void Start() { mapLogic = MapLogic.Instance; playerCharNew = PlayerCharacterNew.Instance; }