Question by
FyreDemon405 · Apr 23, 2017 at 09:32 PM ·
sphererigidbody.addforce
Rigidbody addforce not working
I have a spherical GameObject that is meant to move towards the player depending which side of it its on and this is not working. I tried transform.Translate butthat had some...... Unexpected results with it just hovering over the player the whole time.
here is my current code:
using UnityEngine; using System.Collections;
public class enemymovement : MonoBehaviour {
public Transform target;
public float dirNum;
public GameObject enemyouter;
public GameObject player;
public float speed_for_distance = 10f;
public float movespeed = 10f;
public GameObject Enemymover;
private bool canmove = true;
float AngleDir(Vector3 fwd, Vector3 targetDir, Vector3 up) {
Vector3 perp = Vector3.Cross(fwd, targetDir);
float dir = Vector3.Dot(perp, up);
if (dir > 0f) {
return 1f;
} else if (dir < 0f) {
return -1f;
} else {
return 0f;
}
}
// Update is called once per frame
void FixedUpdate ()
{
Vector3 heading = target.position - transform.position;
dirNum = AngleDir(transform.forward, heading, transform.up);
if(dirNum == 1f && canmove)
{
enemyouter.transform.Rotate(Vector3.back, 18000 / Vector3.Distance(player.transform.position, enemyouter.transform.position) / speed_for_distance * Time.deltaTime);
//transform.Translate(movespeed * Vector3.right * Time.deltaTime); //removed becase it just hovers over the player with this in place
Enemymover.GetComponent<Rigidbody>().AddForce(new Vector3(0, 0, 5f), ForceMode.Impulse);
}
if(dirNum == -1f && canmove)
{
enemyouter.transform.Rotate(Vector3.back, -18000 / Vector3.Distance(player.transform.position, enemyouter.transform.position) / speed_for_distance * Time.deltaTime);
//transform.Translate(movespeed * Vector3.left * Time.deltaTime); //removed becase it just hovers over the player with this in place
Enemymover.GetComponent<Rigidbody>().AddForce(new Vector3(0, 0, -5f), ForceMode.Impulse);
}
}
}
all it does is sit there doing its thing. also the object that is spinning is a different one
Comment