- Home /
My AI code is only making a sprite look Left or Right? Help please.
Basically in my update function for my hero i have an update which is calling this method on an enemy. However the enemy only ever looks left, or right. Can anyone help with this?
function SeekPlayer(shipLoc : Vector3) {
transform.LookAt(shipLoc);
var rot = Quaternion.LookRotation(transform.position - shipLoc, Vector3.forward);
transform.rotation = rot;
transform.eulerAngles = new Vector3(0, 0,transform.eulerAngles.z);
rigidbody2D.AddForce(transform.up * 3);
}
Answer by robertbu · Mar 20, 2014 at 04:44 PM
I'm assuming from the rigidbody2D, that this is a 2D game.
The first problem is that you have three separate tries at setting the rotation here. Each overwrites the previous one. Instead try this:
function SeekPlayer(shipLoc : Vector3) {
var dir = shipLoc - transform.position;
var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
rigidbody2D.AddForce(transform.right * 3);
}
The rotation code assumes that the 'forward' of your 2D character is to the right. Since it appears from your code that the 'forward' is up, fix in Photoshop or you can subtract 90.0 from 'angle' before you pass it to the AngleAxis() function and return to using 'transform.up' for your AddForce(). Note to make this work, you might need to up your Drag setting for your Rigidbody2D.
Yeah your correct about the whole 90degree off thing, but thanks, it works!
Your answer
Follow this Question
Related Questions
How to make an AI like slender ? 1 Answer
AI Following Problem 1 Answer
AI Look at X axis more efficient code 1 Answer
My Enemy's Graphics always rotate towards me even when the CharacterController does not 0 Answers
AI Enemy Follow Player 2 Answers