// Update is called once per frame void FixedUpdate() { if (onLooking) { Vector3 lookPos = lookAtObject.position - transform.position; if (lockYAngle) { lookPos.y = 0; } if (lookPos != Vector3.zero) { Quaternion rot = Quaternion.LookRotation(lookPos); transform.rotation = Quaternion.Slerp(transform.rotation, rot, Time.deltaTime * lookSpeed); } } if (onMoving && !useCharacterController) { if (destinationObject) { destinationPosition = destinationObject.position; } float distance = (transform.position - destinationPosition).magnitude; if (distance >= reachDistance) { transform.position = Vector3.MoveTowards(transform.position, destinationPosition, moveSpeed * Time.deltaTime); } if (distance <= reachDistance) { //onMoving = false; if (stopWhenReach) { onMoving = false; onLooking = false; } if (sendMsgWhenReact != "") { SendMessage(sendMsgWhenReact, SendMessageOptions.DontRequireReceiver); } if (source && !stopSending) { stopSending = true; source.NextEvent(); //source = null; } } } if (onMoving && useCharacterController) { if (destinationObject) { destinationPosition = destinationObject.position; } MoveTowardsTarget(destinationPosition); } }