- Home /
Making an object move in the direction the player is "facing"
Hello, I am making a simple rpg and on the overworld you can cast spells. I am currently working on a fireball, but when it appears, it claims to be pointing in the direction i want in the editor, but it always goes downwards. Here is my script.
if (Overworldfireshot == true)
{
fireball.SetActive(true);
rb2d.velocity = transform.forward * speed;
}
if (Input.GetKey("w"))
{
fireball.transform.LookAt(t1.transform);
}
if (Input.GetKey("a"))
{
fireball.transform.LookAt(t2.transform);
}
if (Input.GetKey("s"))
{
fireball.transform.LookAt(t3.transform);
}
if (Input.GetKey("d"))
{
fireball.transform.LookAt(t4.transform);
}
t1, t2, t3, t4 are all one unit away from the player and the fireballs starting location in the four directions. If a question like this already has been answered, please link me to as I cannot find one. Thanks!
can you draw us a picture of what you are trying to make the fireball do, or just explain what the end goal is. Because if you want to just have it goi forward:
fireball.SetActive(true);
rb2d.velocity = transform.forward * speed;
Should be enough, but if you are trying to control it with W,A,S,D then there might be a different solution out there.
Answer by dowens9021 · Apr 16, 2018 at 01:44 AM
In the Scene view make sure the Blue Arrow (x Axis) isnt point Down. Transfrom.forward moves forward on the Blue Arrow.
still did not work, I wonder if their is another way to move the objects
Answer by DoctorChar · Apr 16, 2018 at 02:23 AM
another problem, this is the new code I am trying,
playerpos.x = 0;
playerpos.y = 0;
playerpos.z = 0;
if (Overworldfireshot == true)
{
Instantiate(fireball, playerpos, playerrot);
rb2d.velocity = transform.forward * speed;
Overworldfireshot = false;
}
if(Input.GetKey("w"))
{
playerrot.x = 180;
playerrot.y = 0;
playerrot.z = 0;
}
if (Input.GetKey("a"))
{
playerrot.x = 0;
playerrot.y = 0;
playerrot.z = 90;
}
if (Input.GetKey("s"))
{
playerrot.x = 0;
playerrot.y = 0;
playerrot.z = 180;
}
if (Input.GetKey("d"))
{
playerrot.x = 0;
playerrot.y = 0;
playerrot.z = 270;
}
but the prefab is not being a child of the player, how do I do that? Still having it only go down despite best efforts.
Your answer
![](https://koobas.hobune.stream/wayback/20220612160833im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
rotating only on the Y-axis 1 Answer
LookAt once 0 Answers
How to prevent Z axis rotation ? 1 Answer
Angle to Rotate Vehicle in Scrolling in Environment 0 Answers
How to prevent Z axis rotation ? 0 Answers