Hi all,
I have a simple setup of two players in a 3D world view, facing across from each other. They can move back and forth (up/down?) but not side to side. the movement of each player is on the Z axis. If each player is DIRECTLY across from each other and I throw a projectile at the other player, the projectile rotates/spins correctly. Now, if player1 is throwing the projectile at player2 and player2 is NOT DIRECTLY sitting across from player1 (e.g. player1 z location = 1 and player2 z location = 10), my projectile seems to “spin” on the wrong axis, I want the projectile to rotate like a throwing knife that only spins end to end, but no rotation left or right say… I am not using velocity to move my object, I’m just moving it “manually”, Is Kinematic is ON, gravity off, I have a rigidbody also for collision later on. See my code below and example picture of what is happening when both players are NOT directly across from each other and a projectile is thrown. Anyone have a rotation solution?
Thanks
King
projectile.cs
// Update is called once per frame
public float projectileSpeed;
public float projectileRotationSpeed;
private Transform projectileTransform;
// Use this for initialization
void Start ()
{
projectileTransform = transform;
}
void Update ()
{
float amtToMove = projectileSpeed * Time.deltaTime;
float amtToRotate = projectileRotationSpeed * Time.deltaTime;
// Projectile speed is set in the INSPECTOR: to 4
Vector3 v = Player2.player2Pos - projectileTransform.localPosition;
//Move the projectile
projectileTransform.localPosition += v.normalized*amtToMove;
//Rotate the projectile (i.e. Knife spinning)
projectileTransform.Rotate(Vector3.back, amtToRotate);
//Check for boundry, if projectile is past a certain point, destroy it
if (projectileTransform.localPosition.x > 15.84f)
{
Destroy(gameObject);//destroy game object we are attatched too...
}
}
Player.cs
//Spacebar to throw a projectile
if (Input.GetKeyDown("space"))
{
player1Pos = player1.transform.localPosition;
Instantiate(KnifePrefab,transform.position,Quaternion.identity);
}