Color GetHealthColor(IHealth health) { var player = actor.World.RenderPlayer ?? actor.World.LocalPlayer; if (Game.Settings.Game.TeamHealthColors && player != null && !player.Spectating) { var apparentOwner = actor.EffectiveOwner != null && actor.EffectiveOwner.Disguised ? actor.EffectiveOwner.Owner : actor.Owner; // For friendly spies, treat the unit's owner as the actual owner if (actor.Owner.IsAlliedWith(actor.World.RenderPlayer)) apparentOwner = actor.Owner; if (apparentOwner == player) return Color.LimeGreen; if (apparentOwner.IsAlliedWith(player)) return Color.Yellow; if (apparentOwner.NonCombatant) return Color.Tan; return Color.Red; } else return health.DamageState == DamageState.Critical ? Color.Red : health.DamageState == DamageState.Heavy ? Color.Yellow : Color.LimeGreen; }
void OnTriggerEnter2D(Collider2D col) { if (col.tag != "Player") return; health = col.gameObject.GetComponent<HealthBehavior>() as IHealth; ((IPickup)this).AddStat(); Destroy(gameObject); }
//--------------------------------- Funcitns void SetIHealth() { try { IHealth = _player.GetComponent<HealthBehavior>() as IHealth; } catch (System.Exception e) { Debug.Log(e); //System.Diagnostics.Process.Start("http://stackoverflow.com/search?q=" + e.Message); } }
void Start() { healthBarCanvas = GameObject.Find("Health Bar Canvas").transform; hpSource = this.GetComponent<IHealth>(); _healthBarInstance = GameObject.Instantiate(healthBarPrefab); _healthBarInstance.SetParent(healthBarCanvas, false); healthBarSlider = _healthBarInstance.GetComponentInChildren<Slider>(); healthBarPos = this.transform.position; healthBarPos.y += healthBarHeight; _healthBarInstance.anchoredPosition = Camera.main.WorldToScreenPoint(healthBarPos); }
protected void Page_Load(object sender, EventArgs e) { m_health = CurrentRequest.Resolver.Resolve <IHealth>(); m_ActivityLogService = CurrentRequest.Resolver.Resolve <IActivityLogService>(); ucServerHealthTabs.LanguageID = LanguageID; ucServerHealthTabs.Title = PhraseLib.Lookup("term.health", LanguageID) + " " + PhraseLib.Lookup("term.for", LanguageID).ToLower(); hdnURL.Value = m_health.HealthServiceURL; ((UE_MasterPage)this.Master).Tab_Name = "8_10"; if (!IsPostBack) { ucServerHealthTabs.EnginesInstalled = m_health.GetInstalledEngines(LanguageID); ucServerHealthTabs.SetInfoMessage("", false); LocationID = -1; LocationID = m_health.GetServerLocationID(); if (!m_health.UseHealthService) { Response.Redirect("/logix/UE/store-health-UE.aspx?filterhealth=2"); } if (LocationID <= 0) { ucServerHealthTabs.SetInfoMessage(PhraseLib.Lookup("serverhealth.novalidserver", LanguageID), true); linkConfig.Visible = false; loadmoreajaxloader.InnerHtml = loadmoreajaxloader1.InnerHtml = "<center>" + PhraseLib.Lookup("term.data", LanguageID) + " " + PhraseLib.Lookup("term.unavailable", LanguageID).ToLower() + "." + "</center>"; } else { linkConfig.Text = PhraseLib.Lookup("term.serverconfiguration", LanguageID); linkConfig.NavigateUrl = "../store-edit.aspx?LocationID=" + hdnLocationID.Value; if (!string.IsNullOrEmpty(Request.QueryString["errorMessage"])) { ucServerHealthTabs.SetInfoMessage(Request.QueryString["errorMessage"], false); } PopulateServerSummary(); } if (!string.IsNullOrEmpty(Request.QueryString["message"])) { ucServerHealthTabs.SetInfoMessage(Request.QueryString["message"], false); } } }
void DrawHealthBar(WorldRenderer wr, IHealth health, float2 start, float2 end) { if (health == null || health.IsDead) { return; } var c = Color.FromArgb(128, 30, 30, 30); var c2 = Color.FromArgb(128, 10, 10, 10); var p = new float2(0, -4); var q = new float2(0, -3); var r = new float2(0, -2); var healthColor = GetHealthColor(health); var healthColor2 = Color.FromArgb( 255, healthColor.R / 2, healthColor.G / 2, healthColor.B / 2); var z = float3.Lerp(start, end, (float)health.HP / health.MaxHP); var cr = Game.Renderer.RgbaColorRenderer; cr.DrawLine(start + p, end + p, 1, c); cr.DrawLine(start + q, end + q, 1, c2); cr.DrawLine(start + r, end + r, 1, c); cr.DrawLine(start + p, z + p, 1, healthColor2); cr.DrawLine(start + q, z + q, 1, healthColor); cr.DrawLine(start + r, z + r, 1, healthColor2); if (health.DisplayHP != health.HP) { var deltaColor = Color.OrangeRed; var deltaColor2 = Color.FromArgb( 255, deltaColor.R / 2, deltaColor.G / 2, deltaColor.B / 2); var zz = float3.Lerp(start, end, (float)health.DisplayHP / health.MaxHP); cr.DrawLine(z + p, zz + p, 1, deltaColor2); cr.DrawLine(z + q, zz + q, 1, deltaColor); cr.DrawLine(z + r, zz + r, 1, deltaColor2); } }
private void Attack() { Collider2D[] collidersInRange = Physics2D.OverlapCircleAll(transform.position, _attackRadius, _attackableLayers); if (collidersInRange != null) { foreach (Collider2D col in collidersInRange) { IHealth health = col.GetComponent <IHealth>(); if (health != null) { health.MyHealthManager.CurrentHealth -= _attackPoints; } } } }
protected void Page_Load(object sender, EventArgs e) { m_health = CurrentRequest.Resolver.Resolve <IHealth>(); m_ActivityLogService = CurrentRequest.Resolver.Resolve <IActivityLogService>(); ucServerHealthTabs.LanguageID = LanguageID; ucServerHealthTabs.Title = PhraseLib.Lookup("term.health", LanguageID) + " " + PhraseLib.Lookup("term.for", LanguageID).ToLower(); hdnURL.Value = m_health.HealthServiceURL; hdnNodeName.Value = Request.QueryString["NodeName"]; ((UE_MasterPage)this.Master).Tab_Name = "8_10"; if (!IsPostBack) { ucServerHealthTabs.EnginesInstalled = m_health.GetInstalledEngines(LanguageID); ucServerHealthTabs.SetInfoMessage("", false); PopulateEnginesPage(); } }
private void OnTriggerEnter(Collider other) { IHealth otherComp = (IHealth)other.gameObject.GetComponentInParent(typeof(IHealth)); if (otherComp != null) { //Add to List if not already in list if (!activeTargets.Contains(other.gameObject)) { activeTargets.Add(other.gameObject); } if (activeTargets.Count > 0) { InvokeRepeating("ShootBullet", 0, m_ShootSpeed); } } }
protected override bool TryStartEnter(Actor self, Actor targetActor) { enterActor = targetActor; enterHealth = targetActor.TraitOrDefault <IHealth>(); // Make sure we can still repair the target before entering // (but not before, because this may stop the actor in the middle of nowhere) var stance = self.Owner.Stances[enterActor.Owner]; if (enterHealth == null || enterHealth.DamageState == DamageState.Undamaged || !info.ValidStances.HasStance(stance)) { Cancel(self, true); return(false); } return(true); }
internal Actor(World world, string name, TypeDictionary initDict) { var init = new ActorInitializer(this, initDict); World = world; ActorID = world.NextAID(); if (initDict.Contains <OwnerInit>()) { Owner = init.Get <OwnerInit, Player>(); } if (name != null) { name = name.ToLowerInvariant(); if (!world.Map.Rules.Actors.ContainsKey(name)) { throw new NotImplementedException("No rules definition for unit " + name); } Info = world.Map.Rules.Actors[name]; foreach (var trait in Info.TraitsInConstructOrder()) { AddTrait(trait.Create(init)); // Some traits rely on properties provided by IOccupySpace in their initialization, // so we must ready it now, we cannot wait until all traits have finished construction. if (trait is IOccupySpaceInfo) { OccupiesSpace = Trait <IOccupySpace>(); } } } Bounds = DetermineBounds(); VisualBounds = DetermineVisualBounds(); EffectiveOwner = TraitOrDefault <IEffectiveOwner>(); facing = TraitOrDefault <IFacing>(); health = TraitOrDefault <IHealth>(); renderModifiers = TraitsImplementing <IRenderModifier>().ToArray(); renders = TraitsImplementing <IRender>().ToArray(); disables = TraitsImplementing <IDisable>().ToArray(); visibilityModifiers = TraitsImplementing <IVisibilityModifier>().ToArray(); defaultVisibility = Trait <IDefaultVisibility>(); }
private void OnTriggerEnter(Collider other) { if (!isHit) { /* * string otherTag = other.gameObject.tag; * if (otherTag.Equals(GlobalVariables.ENEMY_TAG) || otherTag.Equals(GlobalVariables.PLAYER_TAG)) * { * other.GetComponent<IHealth>().DecreaseHealth(DamageAmount, DamageType); * OnHit(); * } * else if (otherTag.Equals(GlobalVariables.MELEE_WEAPON_TAG)) * { * transform.rotation = other.gameObject.transform.rotation; * } * else * { * OnHit(); * } */ int otherLayer = other.gameObject.layer; if (otherLayer == GlobalVariables.ENEMY_LAYER || otherLayer == GlobalVariables.PLAYER_LAYER) { IHealth otherHealth = other.GetComponent <IHealth>(); if (otherHealth == null) { otherHealth = other.GetComponentInParent <IHealth>(); } otherHealth.DecreaseHealth(DamageAmount, DamageType); OnHit(); } else if (otherLayer == GlobalVariables.PLAYER_MELEE_LAYER) { gameObject.layer = GlobalVariables.PLAYER_PROJECTILE_LAYER; transform.rotation = GameMan.Instance.PlayerT.rotation; StartCoroutine(DmgChange()); } else { OnHit(); } } }
private void OnTriggerStay(Collider other) { Debug.Log("Trigger"); IHealth otherComp = (IHealth)other.gameObject.GetComponentInParent(typeof(IHealth)); if (otherComp != null && otherComp.Dead) { activeTargets.Remove(other.gameObject); } if (activeTargets.Count > 0) { cannonHead.transform.LookAt(activeTargets[0].transform.position); } else { ResetPosition(); } }
void UpdateHealth(IHealth health) { healthBarSlider.value = health.Percent; healthLabel.text = string.Format("{0}/{1}", (int)health.Current, (int)health.Max); if (healthRegenLabel != null) { if (health.Regen != null && health.Regen.Current > 0) { healthRegenLabel.text = string.Format("+{0}", health.Regen.Current); healthRegenLabel.gameObject.SetActive(true); } else { healthRegenLabel.gameObject.SetActive(false); } } }
private void OnTriggerStay2D(Collider2D collided) { if (collided.gameObject.tag == "Player" || collided.gameObject.tag == "HeartHolder") { if (!collidedOnce) { myRigidbody.velocity = new Vector2(0, myRigidbody.velocity.y); healthInterface = collided.gameObject.GetComponentInParent <IHealth>(); if (healthInterface) { if (healthInterface.health < healthInterface.maxHealth) { healthInterface.OnHeartCollide(healthIncreaseValue, this); } } } } }
//Transform handPrefabs; void Start() { stats = GetComponent <Stats>(); rb = GetComponent <Rigidbody>(); //handPrefabs = transform.GetChild(0); movement = new Movement(this); movementDir = new MovementDir(); controller = GetComponent <CharacterController>(); anim = GetComponentInChildren <Animator>(); poison = GetComponent <PoisonState>(); weaponManager = GameObject.Find("Weapon Manager"); weapon = null; uiManager = UIManager.instance; health = GetComponent <Health>(); col = GetComponent <Collider>(); }
protected void OnCollisionEnter(Collision collision) { // Collision, Projectile hit something IHealth damageReceiver = collision.gameObject.GetComponentInChildren <IHealth> (); if (damageReceiver != null) { // Colliding object can take damage damageReceiver.TakeDamage(_damage); // TODO: Instantiate effect // TODO: Add sound effect _shooter.ProjectileHit(this); } }
void Update() { if ((LastFireTime + RateOfFire) <= Time.time && Input.GetButtonDown("Fire1")) { LastFireTime = Time.time; RaycastHit hit; Ray ray = PlayerCamera.FPSCamera.ScreenPointToRay(new Vector3(PlayerCamera.FPSCamera.pixelWidth, 0, PlayerCamera.FPSCamera.pixelHeight)); if (Physics.Raycast(PlayerCamera.FPSCamera.transform.position, PlayerCamera.FPSCamera.transform.forward, out hit, 100, HitMask)) { if (hit.transform.tag == "Enemy") { IHealth health = hit.transform.GetComponent <IHealth>(); Debug.Log("Hit Enemy"); health.DealDamage(); } } } }
void DrawHealthBar(IHealth health, float2 start, float2 end) { if (health == null || health.IsDead) { return; } var emptyOutline = Color.FromArgb(128, 30, 30, 30); var emptyBar = Color.FromArgb(128, 10, 10, 10); var p = new float2(0, -6); var q = new float2(0, -4); // unten nach mitte var r = new float2(0, -2); var cr = Game.Renderer.RgbaColorRenderer; cr.DrawLine(start + p, end + p, 2, emptyOutline); cr.DrawLine(start + q, end + q, 3, emptyBar); cr.DrawLine(start + r, end + r, 2, emptyOutline); var healthColor = GetHealthColor(health); var outline = Color.Black; var z = float3.Lerp(start, end, (float)health.HP / health.MaxHP); cr.DrawLine(start + p, z + p, 2, outline); cr.DrawLine(start + q, z + q, 3, healthColor); cr.DrawLine(start + r, z + r, 2, outline); if (health.DisplayHP != health.HP) { var deltaColor = Color.OrangeRed; var deltaColor2 = Color.FromArgb( 255, deltaColor.R / 2, deltaColor.G / 2, deltaColor.B / 2); var zz = float3.Lerp(start, end, (float)health.DisplayHP / health.MaxHP); cr.DrawLine(z + p, zz + p, 2, deltaColor2); cr.DrawLine(z + q, zz + q, 2, deltaColor); cr.DrawLine(z + r, zz + r, 2, deltaColor2); } }
protected virtual void Awake() { photonView = GetComponent <PhotonView>(); health = GetComponent <IHealth>(); runtimeMenuManager = FindObjectOfType <RuntimeMenuManager>(); if (photonView.IsMine) { RuntimeMenuManager runtimeMenuManager = FindObjectOfType <RuntimeMenuManager>(); EnableOwn(components); if (!runtimeMenuManager) { GetComponent <TPCharacter>().SetCamera(runtimeMenuManager.CameraInstance); GetComponent <TPCharacter>().GetInverseKinematics().LookTarget = runtimeMenuManager.CameraInstance.GetComponentInChildren <Transform>(true); runtimeMenuManager.CameraInstance.GetComponent <FPCameraPostProcessing>()._CharacterHealth = GetComponent <CharacterHealth>(); } gameObject.AddComponent <StandaloneController>(); } }
void OnCollisionEnter(Collision other) { IHealth health = other.gameObject.GetComponent <IHealth> (); if (health != null) { if (health.Health < 1) { return; } //if (!PseudoRandom.Instance.SequenceMod (8)) // return; health.Damage(10); GameObject splatterInstance = GameObject.Instantiate(splatterPrefab, transform.position, transform.rotation) as GameObject; } }
private void OnTriggerEnter(Collider other) { if (other != null) { if (other.name == targetedUnit.name) { IHealth enemyHp = other.GetComponent <IHealth>(); switch (pType) { case TurretType.Normal: { enemyHp.TakeDamage(pAtk); } break; case TurretType.Multi_Attack: { enemyHp.TakeDamage(pAtk - 2); } break; case TurretType.Grenadier: { Collider[] others = Physics.OverlapSphere(transform.position, 1.1f, enemyLayer); foreach (var hit in others) { IHealth hitHp = hit.GetComponent <IHealth>(); if (hitHp != null) { hitHp.TakeDamage(pAtk - 3); } } enemyHp.TakeDamage(pAtk); } break; } Destroy(gameObject); } } }
private void ShootLaser() { Vector3 transPos = transform.position; Vector3 lookRot = Quaternion.LookRotation(playerT.position - transPos, Vector3.up).eulerAngles; Vector3 ogRot = transform.rotation.eulerAngles; transform.rotation = Quaternion.Euler(lookRot.x, ogRot.y, ogRot.z); RaycastHit hit; if (Physics.Raycast(transPos, transform.forward, out hit, rayMaxDistance, raycastMask)) { if (!isHit) { GameObject hitGO = hit.collider.gameObject; if (hitGO.layer == GlobalVariables.PLAYER_LAYER) { IHealth otherHealth = hitGO.GetComponent <IHealth>(); if (otherHealth == null) { otherHealth = hitGO.GetComponentInParent <IHealth>(); } otherHealth.DecreaseHealth(dmgAmount, dmgType); isHit = true; } } ParticleEffectBase hitParticles = (ParticleEffectBase)GameMan.Instance.ObjPoolMan.GetObjectFromPool(ObjectPoolType.MeleeHitParticles); hitParticles.Activate(hit.point, Quaternion.identity); float hitDistance = hit.distance; //AfterRay(transPos, hit.point, wasHit: true); //Debug.DrawLine(transform.position, hit.point, Color.red, 1.0f, false); lineRenderer.SetPosition(1, new Vector3(0f, 0f, hitDistance)); } else { //AfterRay(transPos, transPos + transform.forward * rayMaxDistance, wasHit: false); //Debug.DrawLine(transform.position, transform.position + (transform.forward * rayMaxDistance), Color.green, 1f, false); lineRenderer.SetPosition(1, new Vector3(0f, 0f, rayMaxDistance)); } }
private void OnTriggerEnter(Collider other) { if (other.tag == StaticStrings.player) { IHealth h = other.GetComponent <IHealth>(); switch (tp) { //回復 case PickUpType.Heal: if (h != null) { h.Healing(valor); } if (EffectDirector.instance != null && Effect != "") { EffectDirector.instance.playInPlace(other.transform.position, Effect); } break; //ダメージ case PickUpType.Poison: if (h != null) { h.takeDamage(valor); } if (EffectDirector.instance != null && Effect != "") { EffectDirector.instance.playInPlace(transform.position, Effect); } break; //スコアアップ case PickUpType.PointsUp: if (EffectDirector.instance != null && Effect != "") { EffectDirector.instance.generatePopUp((int)valor); } break; } Destroy(gameObject); } }
// ANIMATION EVENTS private void MeleeAttackAnimEvent() { if (currentBehaviour != EnemyBehaviours.Dead && currentBehaviour != EnemyBehaviours.FleeFromPlayer && currentBehaviour != EnemyBehaviours.Knockback) { if (Physics.Raycast(transform.position + transform.up, transform.forward, out RaycastHit hit, meleeAttackRangeRealUnits, playerLayerMask)) { ParticleEffectBase hitParticles = (ParticleEffectBase)GameMan.Instance.ObjPoolMan.GetObjectFromPool(ObjectPoolType.MeleeHitParticles); hitParticles.Activate(hit.point, Quaternion.identity); //playerT.gameObject.GetComponent<IHealth>().DecreaseHealth(meleeDamageAmount, meleeAttackDmgType); IHealth otherHealth = playerT.GetComponent <IHealth>(); if (otherHealth == null) { otherHealth = playerT.GetComponentInParent <IHealth>(); } otherHealth.DecreaseHealth(meleeDamageAmount, meleeAttackDmgType); } } }
public Resupply(Actor self, Actor host, WDist closeEnough, bool stayOnResupplier = false) { this.host = Target.FromActor(host); this.closeEnough = closeEnough; this.stayOnResupplier = stayOnResupplier; allRepairsUnits = host.TraitsImplementing <RepairsUnits>().ToArray(); health = self.TraitOrDefault <IHealth>(); repairable = self.TraitOrDefault <Repairable>(); repairableNear = self.TraitOrDefault <RepairableNear>(); rearmable = self.TraitOrDefault <Rearmable>(); notifyResupplies = host.TraitsImplementing <INotifyResupply>().ToArray(); notifyBeingResupplied = self.TraitsImplementing <INotifyBeingResupplied>().ToArray(); transportCallers = self.TraitsImplementing <ICallForTransport>().ToArray(); move = self.Trait <IMove>(); aircraft = move as Aircraft; moveInfo = self.Info.TraitInfo <IMoveInfo>(); playerResources = self.Owner.PlayerActor.Trait <PlayerResources>(); var valued = self.Info.TraitInfoOrDefault <ValuedInfo>(); unitCost = valued != null ? valued.Cost : 0; var cannotRepairAtHost = health == null || health.DamageState == DamageState.Undamaged || !allRepairsUnits.Any() || ((repairable == null || !repairable.Info.RepairActors.Contains(host.Info.Name)) && (repairableNear == null || !repairableNear.Info.RepairActors.Contains(host.Info.Name))); if (!cannotRepairAtHost) { activeResupplyTypes |= ResupplyType.Repair; // HACK: Reservable logic can't handle repairs, so force a take-off if resupply included repairs. // TODO: Make reservation logic or future docking logic properly handle this. wasRepaired = true; } var cannotRearmAtHost = rearmable == null || !rearmable.Info.RearmActors.Contains(host.Info.Name) || rearmable.RearmableAmmoPools.All(p => p.HasFullAmmo); if (!cannotRearmAtHost) { activeResupplyTypes |= ResupplyType.Rearm; } }
//============================================================================= //Other Methods //============================================================================= public void PingRadar(Character character, string command) { SpaceObject[] objectList = Sector.GetSpaceObjectList(); character.Player.SendInfoMsg("Sending from " + Name + ", ping in: " + Sector.ToString()); character.Player.SendInfoMsg("Objects Found: " + objectList.Length.ToString()); foreach (SpaceObject item in objectList) { if (item is IHealth) { IHealth target = item as IHealth; character.Player.SendInfoMsg(item.IdInSector + " - " + item.Transform.Position.ToString() + " - " + item.Name + " - " + target.Health + "/" + target.MaxHealth); } else { character.Player.SendInfoMsg(item.IdInSector + " - " + item.Name); } } }
public float GetDpsOf([NotNull] IHealth damager) { if (damager == null) { throw new ArgumentNullException(nameof(damager)); } var damages = _damages.Where(t => t.Item1.From == damager).Select(t => t.Item1).ToArray(); if (!damages.Any()) { return(0); } if (Duration == TimeSpan.Zero) { return(damages.Sum(d => d.Damage)); } return(damages.Sum(d => d.Damage) / (float)Duration.TotalSeconds); }
private void OnTriggerEnter(Collider other) { if (death || !dangerous) { return; } if (other.tag == StaticStrings.player) { IHealth health = other.GetComponent <IHealth>(); if (health != null) { health.takeDamage(1); } } if (other.GetComponent <Adv_Drive>()) { other.GetComponent <Adv_Drive>().blinking(); } }
private void UseAOEAttack() { if (target != null) { if (explosionParticle != null) { explosionParticle.transform.position = target.transform.position; explosionParticle.Play(); } if (explosionSound != null) { audioSource.PlayOneShot(explosionSound, 0.2f); } target.TakeDamage(atk); --currentMp; Collider[] others = Physics.OverlapSphere(target.transform.position, 2f); foreach (var hit in others) { IHealth hitHp = hit.GetComponent <IHealth>(); if (hitHp != null) { hitHp.TakeDamage(atk - 3); damageDealt += atk; } } target.TakeDamage(atk); damageDealt += atk; if (rangedSound != null) { audioSource.PlayOneShot(rangedSound, 0.2f); } } else { ChangeState(Move); } }
private IEnumerator Start() { currentChanse = Random.Range(minChanse, maxChanse); IMover _mover = new Mover(this, moveSpeed); IMyAnimations _animation = new CharacterAnimation(GetComponent <Animator>()); IFlip _flip = new FlipWithTranform(this); IHealth _health = GetComponent <IHealth>(); IAttacker _attacker = GetComponent <IAttacker>(); Idle idle = new Idle(_mover, _animation); Walk walk = new Walk(this, _mover, _animation, _flip, patrols); ChasePlayer chasePlayer = new ChasePlayer(_mover, _flip, _animation, IsPlayerRightSide); Attack attack = new Attack(_player.transform.GetComponent <IHealth>(), _flip, _animation, _attacker, maxAttackTime, IsPlayerRightSide); TakeHit takeHit = new TakeHit(_health, _animation); Dead dead = new Dead(this, _animation, () => { if (currentChanse > Random.Range(0, 100)) { Instantiate(scorePrefab, transform.position, Quaternion.identity); } }); _stateMachine.AddTransision(idle, walk, () => idle.IsIdle == false); //Idle'dan Walk'a IsIdle == false ise geç. _stateMachine.AddTransision(idle, chasePlayer, () => DistanceFromMeToPlayer() < chaseDistance); //Idle'dan ChasePlayer'a methoddan dönen değer chaseDistance'dan küçük ise geç. _stateMachine.AddTransision(walk, chasePlayer, () => DistanceFromMeToPlayer() < chaseDistance); //Walk'dan ChasePlayer'a methoddan dönen değer chaseDistance'dan küçük ise geç. _stateMachine.AddTransision(chasePlayer, attack, () => DistanceFromMeToPlayer() < attackDistance); //ChasePlayer'dan Attack'a methoddan dönen değer attackDistance'dan küçük ise geç. //Ters İşlemler _stateMachine.AddTransision(walk, idle, () => !walk.IsWalking); _stateMachine.AddTransision(chasePlayer, idle, () => DistanceFromMeToPlayer() > chaseDistance); _stateMachine.AddTransision(attack, chasePlayer, () => DistanceFromMeToPlayer() > attackDistance); _stateMachine.AddAnyState(dead, () => _health.IsDead); //Kalan can 1'den küçük ise dead state çalıştır. _stateMachine.AddAnyState(takeHit, () => takeHit.IsTakeHit); //isTakeHit true dönerse takeHit çalıştır. _stateMachine.AddTransision(takeHit, chasePlayer, () => takeHit.IsTakeHit == false); _stateMachine.SetState(idle); yield return(null); }
private void Awake() { if (instance == null) { instance = this; } Health = GetComponent <IHealth>(); controller = GetComponent <CharacterController>(); colliderBottom = transform.GetChild(1).gameObject; currentMovementSpeed = baseMovementSpeed; equippedItems = new Dictionary <SlotType, EquippableObject> { { SlotType.Auxiliary, null }, { SlotType.Chest, null }, { SlotType.Head, null }, { SlotType.Legs, null }, { SlotType.Weapon, null } }; }
public override bool Use() { IHealth health = Player.instance.Health; List <Effect> effectsApplied = new List <Effect>(); foreach (Effect effect in Effects) { if (effect.EffectType == EffectType.TakeDamage) { if (effect.Amount <= 0 && health.CurrentHealth == health.MaxHealth) { continue; } health.TakeDamage(effect.Amount, effect.Duration); effectsApplied.Add(effect); } } return(effectsApplied.Count > 0); }
private void OnTriggerEnter(Collider other) { if (!TreeBoss.hasMeleeHit) { if (other.gameObject.layer == GlobalVariables.PLAYER_LAYER) { IHealth otherHealth = other.GetComponent <IHealth>(); if (otherHealth == null) { otherHealth = other.GetComponentInParent <IHealth>(); } otherHealth.DecreaseHealth(currentAttackDmg, attackDmgType); TreeBoss.hasMeleeHit = true; ParticleEffectBase hitParticles = (ParticleEffectBase)GameMan.Instance.ObjPoolMan.GetObjectFromPool(ObjectPoolType.MeleeHitParticles); hitParticles.Activate(GameMan.Instance.PlayerT.position, Quaternion.identity); } } }
void Start() { healthMgr = transform.parent.GetComponent<IHealth>(); engine=transform.parent.GetComponent<PlayerEngine>(); nextFireTime=Time.time; }
void Awake() { healthMgr = GetComponentInParent<IHealth>(); }
static HitStruct PowerHit(IDealsDamage Power, IHealth Target) { HitStruct Hit = Power.GetDamage(); Target.Health -= Hit.HealthDamage; IStun StunTarget = Target as IStun; if (StunTarget != null) { StunTarget.Stun -= Hit.StunDamage; } return Hit; }
void Awake() { healthBar = GetComponent<IHealth>(); }
// creates service definition that can be registered with a server public static ServerServiceDefinition BindService(IHealth serviceImpl) { return ServerServiceDefinition.CreateBuilder(__ServiceName) .AddMethod(__Method_Check, serviceImpl.Check).Build(); }
void IBullet.ApplyDamageOnHit(IHealth hitObject) { hitObject.ApplyDamage(damage); }
void DrawHealthBar(WorldRenderer wr, IHealth health, float3 start, float3 end) { if (health == null || health.IsDead) return; var c = Color.FromArgb(128, 30, 30, 30); var c2 = Color.FromArgb(128, 10, 10, 10); var iz = 1 / wr.Viewport.Zoom; var p = new float2(0, -4 * iz); var q = new float2(0, -3 * iz); var r = new float2(0, -2 * iz); var healthColor = GetHealthColor(health); var healthColor2 = Color.FromArgb( 255, healthColor.R / 2, healthColor.G / 2, healthColor.B / 2); var z = float3.Lerp(start, end, (float)health.HP / health.MaxHP); var wcr = Game.Renderer.WorldRgbaColorRenderer; wcr.DrawLine(start + p, end + p, iz, c); wcr.DrawLine(start + q, end + q, iz, c2); wcr.DrawLine(start + r, end + r, iz, c); wcr.DrawLine(start + p, z + p, iz, healthColor2); wcr.DrawLine(start + q, z + q, iz, healthColor); wcr.DrawLine(start + r, z + r, iz, healthColor2); if (health.DisplayHP != health.HP) { var deltaColor = Color.OrangeRed; var deltaColor2 = Color.FromArgb( 255, deltaColor.R / 2, deltaColor.G / 2, deltaColor.B / 2); var zz = float3.Lerp(start, end, (float)health.DisplayHP / health.MaxHP); wcr.DrawLine(z + p, zz + p, iz, deltaColor2); wcr.DrawLine(z + q, zz + q, iz, deltaColor); wcr.DrawLine(z + r, zz + r, iz, deltaColor2); } }
Color GetHealthColor(IHealth health) { if (Game.Settings.Game.UsePlayerStanceColors) return actor.Owner.PlayerStanceColor(actor); else return health.DamageState == DamageState.Critical ? Color.Red : health.DamageState == DamageState.Heavy ? Color.Yellow : Color.LimeGreen; }