Cómo haríais que el movimiento de un AI no sea constante, sino por "saltitos"? como por ejemplo en el típico froggy que avanza salto a salto..Muchas gracias! PD: Dejo aquí los scripts de movimiento que utilizo por si ayuda de algo..public class Movimiento : MonoBehaviour { float lerpTime;
float currentLerpTime;
float percentage = 1; Vector3 startPos;
Vector3 endPos; bool firstInput;
public bool justJump; void Update () {
if(Input.GetButtonDown("up") || Input.GetButtonDown("down") || Input.GetButtonDown("left") || Input.GetButtonDown("right")) {
if (percentage == 1)
{
lerpTime = 1;
currentLerpTime = 0;
firstInput = true;
justJump = true;
}
}
startPos = gameObject.transform.position;
if (Input.GetButtonDown ("right") && gameObject.transform.position == endPos) {
endPos = new Vector3(transform.position.x + 2, transform.position.y, transform.position.z);
}
if (Input.GetButtonDown ("left") && gameObject.transform.position == endPos) {
endPos = new Vector3(transform.position.x - 2, transform.position.y, transform.position.z);
}
if (Input.GetButtonDown ("up") && gameObject.transform.position == endPos) {
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z + 2);
}
if (Input.GetButtonDown ("down") && gameObject.transform.position == endPos) {
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z - 2);
}
if (firstInput == true) {
currentLerpTime += Time.deltaTime * 5;
percentage = currentLerpTime / lerpTime;
gameObject.transform.position = Vector3.Lerp (startPos, endPos, percentage);
if (percentage > 0.
{
percentage = 1;
}
if (Mathf.Round(percentage) == 1) {
justJump = false;
}
}
}
}_____________________________________________________________________public class Rotacion : MonoBehaviour { Animator anim;
public GameObject player;
void Start () {
anim = gameObject.GetComponent<Animator> ();
} void Update () {
Movimiento bounceScript = player.GetComponent<Movimiento> ();
if(bounceScript.justJump == true) {
anim.SetBool ("Jump",true);
}else{
anim.SetBool ("Jump",false);
}
if (Input.GetButtonDown ("right")) {
gameObject.transform.rotation = Quaternion.Euler(0,0,0);
}
if (Input.GetButtonDown ("left")) {
gameObject.transform.rotation = Quaternion.Euler(0,180,0);
}
if (Input.GetButtonDown ("up")) {
gameObject.transform.rotation = Quaternion.Euler(0,-90, 0);
}
if (Input.GetButtonDown ("down")) {
gameObject.transform.rotation = Quaternion.Euler(0,90, 0);
} }
}
float currentLerpTime;
float percentage = 1; Vector3 startPos;
Vector3 endPos; bool firstInput;
public bool justJump; void Update () {
if(Input.GetButtonDown("up") || Input.GetButtonDown("down") || Input.GetButtonDown("left") || Input.GetButtonDown("right")) {
if (percentage == 1)
{
lerpTime = 1;
currentLerpTime = 0;
firstInput = true;
justJump = true;
}
}
startPos = gameObject.transform.position;
if (Input.GetButtonDown ("right") && gameObject.transform.position == endPos) {
endPos = new Vector3(transform.position.x + 2, transform.position.y, transform.position.z);
}
if (Input.GetButtonDown ("left") && gameObject.transform.position == endPos) {
endPos = new Vector3(transform.position.x - 2, transform.position.y, transform.position.z);
}
if (Input.GetButtonDown ("up") && gameObject.transform.position == endPos) {
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z + 2);
}
if (Input.GetButtonDown ("down") && gameObject.transform.position == endPos) {
endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z - 2);
}
if (firstInput == true) {
currentLerpTime += Time.deltaTime * 5;
percentage = currentLerpTime / lerpTime;
gameObject.transform.position = Vector3.Lerp (startPos, endPos, percentage);
if (percentage > 0.
{percentage = 1;
}
if (Mathf.Round(percentage) == 1) {
justJump = false;
}
}
}
}_____________________________________________________________________public class Rotacion : MonoBehaviour { Animator anim;
public GameObject player;
void Start () {
anim = gameObject.GetComponent<Animator> ();
} void Update () {
Movimiento bounceScript = player.GetComponent<Movimiento> ();
if(bounceScript.justJump == true) {
anim.SetBool ("Jump",true);
}else{
anim.SetBool ("Jump",false);
}
if (Input.GetButtonDown ("right")) {
gameObject.transform.rotation = Quaternion.Euler(0,0,0);
}
if (Input.GetButtonDown ("left")) {
gameObject.transform.rotation = Quaternion.Euler(0,180,0);
}
if (Input.GetButtonDown ("up")) {
gameObject.transform.rotation = Quaternion.Euler(0,-90, 0);
}
if (Input.GetButtonDown ("down")) {
gameObject.transform.rotation = Quaternion.Euler(0,90, 0);
} }
}