Question by
Foshy18 · Oct 12, 2017 at 03:35 AM ·
rigidbodyainavmeshagent
Rigidbody like movement for Vector3.MoveTowards Nav
So I have been trying to make a game where you scare sheep away into pens, I have the basic movement down where the sheep moves on a Navmesh and runs away from player. but want them to act like Rigidbody balls rolling along the ground, any help is greatly appreciated :)
using System.Collections.Generic;
using UnityEngine;
public class Sheep: MonoBehaviour
{
public Transform posPlayer;
public float closeDistance = 5.0F;
public float speed = 1.0F;
public float rotateSpeed = 2.0F;
void Start()
{
posPlayer= GameObject.FindWithTag("Player").transform;
}
void Update()
{
if (other)
{
Vector3 offset = posPlayer.position - transform.position;
float sqrLen = offset.sqrMagnitude;
if (sqrLen < closeDistance * closeDistance)
{
float step = -speed * Time.deltaTime;
float RoStep = -rotateSpeed * Time.deltaTime;
Vector3 targetDir = posPlayer.position - transform.position;
Vector3 newDir = Vector3.RotateTowards(transform.forward, targetDir, RoStep, 0.0F);
Debug.DrawRay(transform.position, newDir, Color.red);
transform.rotation = Quaternion.LookRotation(newDir);
transform.position = Vector3.MoveTowards(transform.position, posPlayer.position, step);
transform.eulerAngles=new Vector3(0,transform.eulerAngles.y,transform.eulerAngles.z);
//Just for Debug
print ("Player is close, Running Away");
}
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Pros and cons to using Navmesh Agents over custom-made AI? 1 Answer
Using Rigidbody physics to move an enemy with NavMeshAgent - De-sync issues 0 Answers
NavMesh OffMeshLink only use if a condition is meet 0 Answers
how to search for a random point until the condition is true? 0 Answers
I need the Nav Mesh Stop , I need the Animation to Play Javascript 0 Answers