I have been searching around but i cant find anything that will work. All im looking for is a script that moves the enemy forward and when it encouteres an object it randomly picks going right or left.
Edit or backwards
Thats pretty simple to do, and if its all you need i would recommend looking at Raycast documentation
Also, Random.Range and a simple if() statement would take care of your left / right issue.
If your totally new to the scripting side of things , send me a pm, i will help ya out. However - all the info you need is found in abundance.
i tried using constant force to move forward but it gave me a ton of errors.
I got This
var leftright = 0;
function Update () {
leftright = Random.Range(1, 3);
transform.Translate(Vector3.forward * Time.deltaTime * 5);
var fwd = transform.TransformDirection (Vector3.forward);
if (Physics.Raycast (transform.position, fwd, 10)) {
if (leftright == 1){
transform.Rotate (0,0,10);
}
else if (leftright == 2){
transform.Rotate (0,10,0);
}
else if (leftright == 3){
transform.Rotate (10,0,0);
}
}
but the turn does not work.
maybe this help
var forwardSpeed : int = 5;
var CheckWide : int = 10;
var rotateSpeed : int = 1;
function Update () {
// Moving Forward
if (!Physics.Raycast (transform.position, transform.forward, CheckWide)) {
transform.Translate(transform.forward * forwardSpeed * Time.deltaTime);
}
// Check if we hit something to the Right side. Move left
if(Physics.Raycast(transform.position, transform.forward + transform.right, CheckWide)) {
transform.Rotate(-transform.right * rotateSpeed * Time.deltaTime);
}
// Check if we hit something to the left side. Move right
else if(Physics.Raycast(transform.position, -transform.right + transform.forward, CheckWide)) {
transform.Rotate(transform.right * rotateSpeed * Time.deltaTime);
}
}
That worked for about 1 second. Then stoped
Anyone to help?
Edit i tried this
var forwardSpeed : int = 5;
var CheckWide : int = 10;
var rotateSpeed : int = 1;
function Update () {
time = Time.time;
transform.Translate(Vector3.forward * Time.deltaTime * 5);
var fwd = transform.TransformDirection (Vector3.forward);
// Check if we hit something to the Right side. Move left
if(Physics.Raycast(transform.position, transform.forward + transform.right, CheckWide)) {
transform.Rotate(-transform.right * rotateSpeed * Time.deltaTime);
}
// Check if we hit something to the left side. Move right
else if(Physics.Raycast(transform.position, -transform.right + transform.forward, CheckWide)) {
transform.Rotate(transform.right * rotateSpeed * Time.deltaTime);
}
}
var forwardSpeed : int = 5;
var CheckWide : int = 10;
var rotateSpeed : int = 1;
function Update () {
time = Time.time;
transform.Translate(Vector3.forward * Time.deltaTime * 5);
var fwd = transform.TransformDirection (Vector3.forward);
// Check if we hit something to the Right side. Move left
if(Physics.Raycast(transform.position, transform.forward + transform.right, CheckWide)) {
transform.Rotate(-transform.right * rotateSpeed * Time.deltaTime);
}
// Check if we hit something to the left side. Move right
else if(Physics.Raycast(transform.position, -transform.right + transform.forward, CheckWide)) {
transform.Rotate(transform.right * rotateSpeed * Time.deltaTime);
}
}
I got this but how would you implement if somethings in front then turn around.
Edit: to get them to go forward i added a cube jetting out of the sphere.