//dev //collider attached to the rig seems to be spinning like hell //Thus force-prevent spinning // void LateUpdate () // { // transform.localPosition = Vector3.zero; // transform.localRotation = Quaternion.identity; // // else // // print ("osh : " + _osh.name); // } // void OnCollisionStay (Collision collision) // { //// print ("Collided with " + collision.transform.name); // //damagable things discovered //// if (collision.transform.GetComponent<ObjectStatusHandler> () != null) { //// ObjectStatusHandler osh = collision.transform.GetComponent<ObjectStatusHandler> (); //// if (osh.IsWalled) { //// foreach (var po in _pressingObjects) { //// if (po.Timer + _damagingRate < Time.time) { //// dealDamange (osh); //// } //// } //// } ////// print (osh.name); //// origin = osh.transform.position; //// origin = new Vector3 (origin.x, transform.position.y, origin.z); //// dir = osh.transform.position - collision.contacts [0].point; //// dir = new Vector3 (dir.x, 0f, dir.z); //// dir.Normalize (); //// //// // Physics.SphereCast (레이저를 발사할 위치, 구의 반경, 발사 방향, 충돌 결과, 최대 거리) //// LayerMask lm = (1 << LayerHelper.DEFAULT); //// isHit = false; ////// isHit = Physics.SphereCast (origin, radius, dir, out hit, maxDistance, lm); //// isHit = Physics.Raycast (origin, dir, out hit, maxDistance, lm); //// if (isHit) { //// print ("Hit : " + hit.collider.name); //// dealDamange (osh); ////// Debug.Break (); //// ParticleController.PC.InstantiateParticle(collision.contacts [0].point); //// } //// } // } // void OnDrawGizmos () // { // if (isHit) { // Gizmos.color = Color.red; // Gizmos.DrawRay (origin, dir * hit.distance); //// Gizmos.DrawWireSphere (origin + dir * hit.distance, radius); // } else { // Gizmos.DrawRay (origin, dir * maxDistance); // } // } /// <summary> /// Handles dealing damage to the contact object(enemy) /// Also handles pushback and staggering the target. /// dev /// </summary> /// <param name="osh">Target's ObjectStatusHandler</param> protected void dealDamange(ObjectStatusHandler osh) { //inflict damage osh.SubtractHealth(_damage); //disable hit target's damaging points if (true) { if (osh.GetComponent <CombatHandler> ()) { // disableDamagingPoints (osh.GetComponent<CombatHandler> ()); osh.GetComponent <CombatHandler> ().DisableDamagingPoints(); } } //add to ultimate guage _ch.AddUltimatePoint(_damage / 25); //add more if it's a killing blow if (osh.GetHealth() - _damage <= 0) { _ch.AddUltimatePoint(5); } //if character, stagger it //Note : Stagger animation will transit from AnyState for minions and certain character via animator // Player characters at the moment does not have AnyState linked to Stagger, so their action will not get interrupted by getting attack CharacterStatusHandler csh = osh.GetComponent <CharacterStatusHandler> (); if (csh != null) { csh.Stagger(_damagingRate / 5f); } // if (csh != null) // ((CharacterStatusHandler)osh).Stagger (_pushDuration); }
/// <summary> /// Handles dealing damage to the contact object(enemy) /// Also handles pushback and staggering the target. /// </summary> /// <param name="osh">Target's ObjectStatusHandler</param> protected void dealDamange(ObjectStatusHandler osh) { //inflict damage osh.SubtractHealth(_weapon.GetDamage()); //disable hit target's damaging points if (_weapon.GetDisablesTargetDamagingPointOnhit()) { if (osh.GetComponent <CombatHandler> ()) { // disableDamagingPoints (osh.GetComponent<CombatHandler> ()); osh.GetComponent <CombatHandler> ().DisableDamagingPoints(); } } //add to ultimate guage _weapon.GetOwner().AddUltimatePoint(_weapon.GetDamage() / 25); //add more if it's a killing blow if (osh.GetHealth() - _weapon.GetDamage() <= 0) { _weapon.GetOwner().AddUltimatePoint(5); } //drop if hanging CharacterMovementHandler cmh = osh.GetComponent <CharacterMovementHandler> (); // HangHandler hh = cmh.HangHandler; if (cmh && cmh.Hanging) { // hh.HangToDrop (); cmh.HangToDrop(); } else { //push object back //Duke (8/6/2016) //BUG : disabled because push direction changes as target rotates. make it absolute direction //Log : //Duke(8/11/2016) : Code is correct, suspect problem with pre-existing photon view enemies. Instantiating all characters may solve it. Enabled pushback to test it. //Duke(8/27/2016) : Problem occured again, there must be something wrong // Seems to be fixed with setting position i nstead of translate pushBack(osh, _pushDuration); //if character, stagger it //Note : Stagger animation will transit from AnyState for minions and certain character via animator // Player characters at the moment does not have AnyState linked to Stagger, so their action will not get interrupted by getting attack CharacterStatusHandler csh = osh.GetComponent <CharacterStatusHandler> (); if (csh != null) { // csh.Stagger (_pushDuration); csh.Stagger(_staggerDuration); } } }
// public void ParentCanvas(Transform parent){ // this.GetComponent<Transform>().SetParent (parent); // } /// <summary> /// Assigns a Player Target to Follow and represent. /// </summary> /// <param name="target">Target.</param> public void SetTarget(Transform target) { if (target == null) { Debug.LogError("<Color=Red><b>Missing</b></Color> PlayerInfo target for PlayerUI.SetTarget.", this); return; } // Cache references for efficiency because we are going to reuse them. _target = target.GetComponent <ObjectStatusHandler>(); _targetTransform = target; _targetRenderer = _target.GetComponent <Renderer>(); if (PlayerNameText != null) { if (target.GetComponent <PhotonView> ().owner != null) //owner is null when offlineMode { PlayerNameText.text = target.GetComponent <PhotonView> ().owner.name; } else { PlayerNameText.text = "Offline Player"; } } }