Опитвам се да науча Unity (така че моля да ме извините за начинаещия ми). Настроих проекта си като 2d, имам спрайт, който се движи и се опитвам да получа изстрелване на снаряд (оценявам, че има МНОГО ТОЛКОВА q за такива, но просто не мога да го накарам да работи, след като опитах много решения). Аз съм пълен глупак, когато става въпрос за физика!
Ето моят много прост скрипт:
using UnityEngine;
using System.Collections;
public class PlayerScript : MonoBehaviour {
public Transform mObject;
public Transform mProjectile;
public Vector2 mProjectileSpeed = new Vector2 (10f, 10f);
public Vector2 mSpeed = new Vector2(15, 15);
private Vector2 mMovement;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
float inputX = Input.GetAxis("X");
float inputY = Input.GetAxis("Y");
mMovement = new Vector2 (mSpeed.x * inputX, mSpeed.y * inputY);
if (Input.GetButton ("Fire1"))
Shoot ();
}
void Shoot(){
GameObject clone = (GameObject)Instantiate (mProjectile, rigidbody2D.transform.position, Quaternion.identity);
clone.rigidbody2D.velocity = (clone.transform.forward * 1000);
}
void FixedUpdate(){
rigidbody2D.velocity = mMovement;
}
}
И ето какво прави:
Не се добавя сила към създадения обект и той изстрелва двете страни на моя спрайт, което просто не разбирам изобщо.
Намерих решение на сайта за отговори на Unity, което казваше на IgnoreCollider
само в случай, че двата кутийни колайдера са противоречиви резултати, но това не направи разлика.
Сигурен съм, че правя нещо напълно глупаво, но как мога да направя това?
Много благодаря!
direction
във вашияShoot
метод, но след това не го използвате. Това предназначено ли е? - person Chris Sinclair   schedule 13.12.2014rigidbody2D.transform.position + clone.transform.forward * 10.0f
. Изглежда, че спрайтът и снарядите се сблъскват. - person maZZZu   schedule 14.12.2014