void TravelToParent() { travelTimeParent_ += Time.deltaTime; if (travelTimeParent_ > travelSpeed_) { GameObject toRemove = null; foreach (GameObject bodyPartGO in toParent_) { //TentaclePart bodyPart = bodyPartGO.GetComponent<TentaclePart>(); if (bodyPartGO.transform.position != tentacle_.transform.position) { bodyPartGO.transform.position = Vector3.MoveTowards(bodyPartGO.transform.position, tentacle_.transform.position, Tentacle.fastTravelSpeed_ * Time.deltaTime); } if (bodyPartGO.transform.position == tentacle_.transform.position) { toRemove = bodyPartGO; } } if (toRemove != null) { toParent_.Remove(toRemove); tentacle_.RemoveBodyPart(toRemove); } travelTimeParent_ = 0; } }
void PartialReturn() { travelTime_ += Time.deltaTime; if (travelTime_ > travelSpeed_) { GameObject toRemove = null; TentaclePart headPart = null; foreach (GameObject bodyPartGO in tentacle_.BodyParts_) { TentaclePart bodyPart = bodyPartGO.GetComponent <TentaclePart>(); if (middleGO_ == null && bodyPart.BodyPartId_ == 0) { Vector3 midlePos = Vector3.MoveTowards(bodyPart.targetGO_.transform.position, tentacle_.transform.position, Vector3.Distance(tentacle_.transform.position, bodyPart.targetGO_.transform.position) / 2); midlePos = Vector3.MoveTowards(midlePos, tentacle_.Target_.transform.position, -0.3f); middleGO_ = new GameObject(); middleGO_.transform.position = midlePos; bodyPart.targetGO_ = middleGO_; headPart = bodyPart; } if (bodyPart.BodyPartId_ == 0 && !bodyPart.atDestination) { /*Vector3 middlePoint = Vector3.MoveTowards(bodyPart.targetGO_.transform.position, tentacle_.transform.position, Vector3.Distance(bodyPart.targetGO_.transform.position, tentacle_.transform.position) / 2); * bodyPart.transform.position = Vector3.MoveTowards(bodyPart.transform.position, middlePoint, 0.01f);*/ bodyPart.transform.position = Vector3.MoveTowards(bodyPart.transform.position, bodyPart.targetGO_.transform.position, Tentacle.travelSpeed_ * Time.deltaTime); } else { bodyPartGO.transform.position = Vector3.MoveTowards(bodyPartGO.transform.position, tentacle_.transform.position, Tentacle.travelSpeed_ * Time.deltaTime); } if (bodyPartGO.transform.position == tentacle_.transform.position) { toRemove = bodyPartGO; } } if (toRemove != null) { tentacle_.RemoveBodyPart(toRemove); } travelTime_ = 0; } }