- Home /
Question by
Garrom · Dec 16, 2016 at 11:56 AM ·
rotationvector3localpositionlocalrotationorigin
rotated position, together with the object (around the origin)
Hello everyone. I do top-down space shooter. I have a script that controls the weapons he has vector3 array values that determine the position of weapons. these values are converted from local coordinates to world coordinates. But when the ship turn around 90 degrees, the coordinate is not rotated, just track the position of the ship (see. figure 1). could someone tell me how to turn coordinate together with the ship?
here is my weapon controller script :
using UnityEngine;
using System.Collections;
public class PrimarWeaponController : MonoBehaviour {
public float cooldown {get;set;}
public string projectileName{get;set;}
public float projectileSpeed{get;set;}
public int projectileNumber{get;set;}
public float Unacurity{get;set;}
public Vector3[] PrimGuns;
GameObject projectile;
Quaternion dir;
float shoot;
void Start () {
//UNDONE : Variables only for testing
cooldown = 0.3f;
projectileName = "LaserBlast";
projectileSpeed = 10f;
projectileNumber = 1;
Unacurity = 0.1f;
projectile = Resources.Load(projectileName, typeof (GameObject)) as GameObject;
shoot = Time.time + cooldown;
}
void Update () {
if(shoot <= Time.time && Input.GetButton("MouseL")){
foreach(Vector3 m in PrimGuns){
for(int i = 0; i < projectileNumber; i++){
float rand = Random.Range(-Unacurity,Unacurity);
dir = Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y+(rand*Mathf.PI), transform.eulerAngles.z);
GameObject blast = Instantiate(projectile,transform.position + m,dir) as GameObject;
Debug.Log(transform.position + m);
blast.GetComponent<Rigidbody>().rotation = dir;
Vector3 velocity = transform.TransformDirection(new Vector3(rand,-projectileSpeed,0) * projectileSpeed);
blast.GetComponent<Rigidbody>().AddForce(velocity,ForceMode.Impulse);
}
}
shoot = Time.time + cooldown;
}
}
}
bez-nazvu.png
(4.9 kB)
Comment
Your answer
Follow this Question
Related Questions
Transfer axis global rotation on local axis of another object 0 Answers
Point game object to another only on the Local X Axis 0 Answers
Rotating wrong 0 Answers