void Update() { if (State == BytesStates.Activated || State == BytesStates.DontBack) { if (Path.corners.Length > 1) { if (CurrentIndex < Path.corners.Length && CurrentIndex > -1) { transform.position = transform.position + transform.forward * Speed * Time.deltaTime; //transform.position = transform.position + ((Path.corners[CurrentIndex] - transform.position).normalized * Speed * Time.deltaTime); transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(Path.corners[CurrentIndex] - transform.position + Offset + new Vector3(Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange))), AnigularSpeed * Time.deltaTime); if (Vector3.Distance(transform.position, Path.corners[CurrentIndex] + Offset) < DistanceReaction) { CurrentIndex += Delta; } } else { //CurrentIndex = 0; if (State != BytesStates.DontBack) { if (CurrentIndex == Path.corners.Length && Vector3.Distance(transform.position, Target.transform.position) < DistanceReaction*3 && TargetFX != null) GlobalEvents.Instance.ByteReachedTarget(Daticus, TargetFX); Delta = -Delta; CurrentIndex += Delta; transform.position = Path.corners[CurrentIndex]; } else { StartPosition = Path.corners[Path.corners.Length - 1]; State = BytesStates.Disable; CurrentIndex = 0; } } } else { transform.position = transform.position + transform.forward * Speed * Time.deltaTime; //transform.position = transform.position + ((Path.corners[CurrentIndex] - transform.position).normalized * Speed * Time.deltaTime); transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(StartPosition - transform.position + Offset + new Vector3(Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange))), AnigularSpeed * Time.deltaTime); } } else { transform.position = transform.position + transform.forward * Speed * Time.deltaTime; //transform.position = transform.position + ((Path.corners[CurrentIndex] - transform.position).normalized * Speed * Time.deltaTime); transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(StartPosition - transform.position + Offset + new Vector3(Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange))), AnigularSpeed * Time.deltaTime); } }
public void SetState(int state) { State = (BytesStates)state; }