- Home /
NPC sinking through ground while trying to follow player
Hello! So I have a level in my game where an enemy is trying to chase after the player. I know this question has been asked a hundred times, but I haven't been able to use the information in those answers. What my issue is is, is that when my enemy chases after my character, he started to sink through the floor as he walks while tilting upwards, until he disappears. I am currently using a box collider on him, although I've used a rigidbody and charactercontroller up to this point, which didn't work. Here is my my code below- using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityStandardAssets.Characters.FirstPerson; public class MovingScript : MonoBehaviour { private Animator anim; public GameObject player; public float dist; //active runs the corrutine public bool active; //deactive keeps the corrutine from rerunning public bool deactive; public float movespeed = 10f; public Transform player2; // Use this for initialization void Start() { active = true; anim = GetComponent<Animator>(); player = GameObject.Find("FPSController"); deactive = false; if (active == true) { StartCoroutine(Run()); } } // Update is called once per frame void Update() { float dist = Vector3.Distance(player.transform.position, transform.position); print("The player is:" + dist); if (deactive == false) { anim.Play("CombatIdle"); } if (deactive == true && dist >= 3) { transform.LookAt(player2.position); transform.Translate(-transform.forward * movespeed * Time.deltaTime); anim.Play("Walk"); } else if (deactive == true && dist <= 3) { anim.Play("CombatIdle"); } } IEnumerator Run() { //five seconds of dialogue yield return new WaitForSeconds(5); deactive = true; active = false; } }
Answer by Lost_Syndicate · Jun 02, 2018 at 07:12 PM
Are you sure it rigidbody doesn't work? If you want a script that doesnt require any effort, and you can attach to do this; Attach a nav mesh agent to a capsule, with rigidbody, and make a new script and put this on it.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class aiscript : MonoBehaviour {
void Update () {
transform.GetComponent<NavMeshAgent>().destination = GameObject.FindWithTag("Player").transform.position;
}
}
Also MAKE SURE YOU MAKE THE OBJECTS STATIC THAT YOU WANT THE ENEMY NOT TO GO Through, then in nagivation tab click bake
Your answer
Follow this Question
Related Questions
Referencing Mono Framework assemblies 2 Answers
Why does a script launched in Visual Studio from Unity say "Unrecognized Guid Format"? 1 Answer
How can you make an object visible in Unity when you jump on it? 0 Answers
MacOS Sierra Can't Use pdb2mdb.exe? 0 Answers
Guys i really need your help! Why i cant use unity addons? 0 Answers