Kostya
Kostya

Reputation: 141

Unity3D: TPS shooting without mouse aiming

I'm currently developing some TPS game. I have my player model and camera snapped to its shoulder, and some Empty game object in front of player at some distance for calculating vector for bullets (Yellow diamond at screenshot).

I'm developing for mobile platforms, so there is no mouse; just that Empty game object that points direction of the gun.

So when a fire event occurs I want to apply force to bullet and it will fly in right direction. Here is my code

b.transform.position = transform.position;
b.transform.position += transform.forward;
b.SetActive(true);

var rb = b.GetComponent<Rigidbody>();

print((Aim.position - transform.position).normalized);

rb.AddForce((Aim.position - transform.position).normalized * Thrust);

Aim is my EmptyGameObject that points direction, transform is GunEnd gameobject, and b is my bullet instance. So if I try shoot from default player position bulet flies correct from GunEnd to Aim object. Correct bullet

But if I rotate character for example more that 90 degree left, bullets start to fly in some weird trajectory Not good trajectory

So, can anybody help me how to correct send bullets?

Upvotes: 0

Views: 386

Answers (1)

Luis Ponce
Luis Ponce

Reputation: 63

When you move it´s position with b.transform.position += transform.forward; you might be setting it in an odd place if the transform does not rotate when you aim (and by what I can see in the screenshot, it is not rotating as its components in the transform.rotate remain the same in y). Try moving it with the vector you find with the Aim, like this:

b.transform.position += (Aim.position - transform.position).normalized;

Upvotes: 0

Related Questions