Gegner fliegt durch Terrain durch?
Hi,
ich mache gerade ein 3D-Spiel und die Gegner sollen meinen Spieler "jagen".
Damit die auf den Spieler zulaufen und schlagen, verwende ich folgendes Skript:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class enemymover : MonoBehaviour
{
public GameObject FPSController;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
//transform.LookAt(FPSController.transform);
Quaternion targetRotation = Quaternion.LookRotation(FPSController.transform.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 7 * Time.deltaTime);
transform.position += transform.forward * 7f * Time.deltaTime;
}
}
Doch dadurch fliegen sie durch Objekte hindurch und ignorieren Terrain und Collider komplett. Weiß jemand, wie das besser geht?
Danke.
1 Antwort
Hi,
hier ist leider einiges verkehrt. :-)
Wenn dein Gegner auf Kollision reagieren soll, benötigt er einen Rigidbody.
Dann du den Gegner in FixedUpdate statt Update bewegen und zwar über den Rigidbody und nicht über transform.
wann immer du etwas über transform bewegst, wird niemals eine Kollision stattfinden.
beachte aber bitte, dass der Gegner, so wie du es entwickelt hast, stur auf dich zu läuft und ggf von Collidern nur abgedrängt wird, aber nicht richtig „ausweicht“.
Wenn du das etwas besser haben willst, solltest Du Dir mal das NavMesh anschauen.
Genau dazu nein, da es jeweils einzelne Punkte sind. Die Doku von Unity hilft hierbei schon ganz gut. :)
hast du zufällig eine Anleitung dazu?