public NetworkAtTargetState(GameObject target, NetworkTentacle tentacle) { tentacle_ = tentacle; target_ = target; bodyPartRadius_ = 0.2f; pulseTime_ = 0; pulseHoldTime_ = 0.08f; tentacleHead_ = tentacle.Head_.GetComponent <NetworkTentaclePart>(); atCell_ = tentacleHead_.targetGO_.GetComponent <NetworkCell>() != null; targetCell_ = target.GetComponent <NetworkCell>(); }
void HandlePulse() { pulseTime_ += Time.deltaTime; if (pulseTime_ > pulseHoldTime_) { foreach (GameObject bodyPartGO in tentacle_.BodyParts_) { NetworkTentaclePart bodyPart = bodyPartGO.GetComponent <NetworkTentaclePart>(); if (bodyPart.HasPulse_) { bodyPart.SendPulse(); } } pulseTime_ = 0; } }
public NetworkToTargetState(GameObject target, NetworkTentacle tentacle) { tentacle_ = tentacle; target_ = target; headDistance_ = Vector3.Distance(tentacle.Head_.transform.position, target_.transform.position); bodyPartRadius_ = 0.2f; nextPartDistance_ = headDistance_ - bodyPartRadius_; headPart_ = tentacle.Head_.GetComponent <NetworkTentaclePart>(); targetCell_ = target_.GetComponent <NetworkCell>(); if (NetworkCell.AreAlly(tentacle_.ParentCell_, targetCell_, tentacle_.ParentCell_.TeamManager_)) { foreach (NetworkTentacle targetTentacle in targetCell_.Tentacles_) { if (targetTentacle.Target_ == tentacle_.ParentCell_.gameObject) { targetTentacle.Retreat(); } } } }
void HandleExtensionMovement() { travelTime_ += Time.deltaTime; if (travelTime_ > travelSpeed_) { foreach (GameObject bodyPart in tentacle_.BodyParts_) { NetworkTentaclePart part = bodyPart.GetComponent <NetworkTentaclePart>(); if (!part.atDestination) { if (part.IsHead_ && tentacle_.IsDefending_()) { if (middleGO_ == null) { Vector3 midlePos = Vector3.MoveTowards(part.targetGO_.transform.position, tentacle_.transform.position, Vector3.Distance(tentacle_.transform.position, part.targetGO_.transform.position) / 2); midlePos = Vector3.MoveTowards(midlePos, tentacle_.transform.position, 0.1f); middleGO_ = new GameObject(); middleGO_.transform.position = midlePos; Debug.Log("Middle position: " + midlePos); part.targetGO_ = middleGO_; } part.transform.position = Vector3.MoveTowards(part.transform.position, part.targetGO_.transform.position, NetworkTentacle.travelSpeed_ * Time.deltaTime); } else { if (part.BodyPartId_ == 0 && middleGO_ != null) { part.targetGO_ = tentacle_.Target_; } Vector3 variable = Vector3.MoveTowards(part.targetGO_.transform.position, tentacle_.transform.position, 0.2f); float distance = Vector3.Distance(part.transform.position, variable); float distance2D = Vector2.Distance(part.transform.position, variable); part.transform.position = Vector3.MoveTowards(part.transform.position, Vector3.MoveTowards(part.targetGO_.transform.position, tentacle_.transform.position, 0.2f), NetworkTentacle.travelSpeed_ * Time.deltaTime); } } } travelTime_ = 0; } }