// Update is called once per frame void Update() { NPCFidget movements = GetComponent <NPCFidget>(); if (movements != null) { movements.StartWalking(); } Vector3 destination = GameObject.FindWithTag("Player").transform.position; transform.LookAt(destination); transform.Translate(Vector3.forward * Time.deltaTime); transform.position = new Vector3(transform.position.x, Terrain.activeTerrain.SampleHeight(transform.position), transform.position.z); }
public WalkingState walk(float walkingSpeed) //code to walk { if (pathIndex < movements.Count - 1) { NPCFidget fidgets = GetComponent <NPCFidget>(); fidgets.StartWalking(); transform.LookAt(movements[pathIndex]); transform.Translate(Vector3.forward * Time.deltaTime * walkingSpeed); transform.position = new Vector3(transform.position.x, Terrain.activeTerrain.SampleHeight(transform.position), transform.position.z); if (Vector3.Distance(transform.position, movements[pathIndex]) < Random.Range(1, 4)) { pathIndex++; } return(currentState); } //Maybe here we can choose a random direction to face and a random small amount to move forward and make them move that much currentState = WalkingState.NotStarted; return(WalkingState.ReachedDestination); }