我搜索过Top Down 2D旋转的一堆帖子,发射导弹,但没有一个适用于我的。
我的巫师设法从他的魔杖中射出他的魔法导弹,但是他们的魔杖指向不对齐。 它应该从魔杖的四元数中取出Z值并将其指定为它所出现的角度(或者至少是我认为它应该做的那样)但它似乎比魔杖旋转得更快虽然如果我旋转它确实会发生变化,但它并没有随着魔杖的变化而变化。因此,如果我指出它将会启动。如果我指向右侧45度,它会将导弹直接射入我的巫师。
导弹移动守则---------------
using UnityEngine;
using System.Collections;
public class MoveMissile : MonoBehaviour {
// Use this for initialization
public float speed = 0.5F;
public Transform Shotspawn;
// public Quaternion Direction;
private float Direction;
void Start (){
// Sets the direction that shot is fired in.
Direction = transform.rotation.eulerAngles.z;
transform.Rotate(0 , 0, Direction);
}
// Update is called once per frame
void Update () {
transform.Translate(Vector2.up * speed);
}
}
角色运动守则---------------------------
using UnityEngine;
using System.Collections;
public class TopDownCharController2 : MonoBehaviour {
// Movement Variables
public float walkSpeed;
public bool colliding;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
if(Input.GetKey (KeyCode.I))
{transform.Translate(Vector2.up * walkSpeed); } // UP MOVEMENT
if(Input.GetKey(KeyCode.J))
{transform.Translate(-Vector2.right * walkSpeed); } // LEFT MOVEMENT
if(Input.GetKey(KeyCode.K))
{transform.Translate(-Vector2.up * walkSpeed); }// DOWN MOVEMENT
if(Input.GetKey(KeyCode.L))
{transform.Translate(Vector2.right * walkSpeed); }// RIGHT MOVEMENT
if(Input.GetKey(KeyCode.U)) {
// Clockwise
transform.Rotate(0, 0, -3.0f);
}
if(Input.GetKey(KeyCode.O)) {
// Counter-clockwise
transform.Rotate(0, 0, 3.0f);
}
}
}
如果有人能告诉我哪里出错我会很可爱。 :)
答案 0 :(得分:0)
所以它不起作用的原因是因为它读取方向然后再添加一点,所以它有点过度纠正。所以代码应该是:
using UnityEngine;
using System.Collections;
public class MoveMissile : MonoBehaviour {
// Use this for initialization
public float speed = 0.5F;
public Transform Shotspawn;
void Start (){
// Sets the direction that shot is fired in.
transform.rotation=Shotspawn.rotation;
}
// Update is called once per frame
void Update () {
transform.Translate(Vector2.up * speed);
}
}