Я пытаюсь изучить Unity (так, пожалуйста, простите мою новичку). Я создал свой проект как 2d, получил спрайт, и я пытаюсь запустить стрельбу из снаряда (я ценю, что есть МНОГО ТАК, о таких, но я просто не могу заставить его работать, после многих попыток растворы). Я полный ореол, когда дело доходит до физики!Снаряд в Unity 2D
Вот мой очень простой сценарий:
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
на всякий случай, если два коллайдера поля имеют противоречивые результаты, но это не повлияло.
Я уверен, что я делаю что-то совершенно глупое, но как я могу это сделать?
Большое спасибо!
Вы передаете 'направление' в свой метод' Shoot', но тогда вы его не используете. Это предназначено? –
Да, извините. Это остатки предыдущего решения, которое не сработало. – LokiSinclair
Вы пытались создать экземпляр снарядов перед спрайтом? Это можно сделать, установив позицию экземпляра со смещением: 'rigidbody2D.transform.position + clone.transform.forward * 10.0f'. Кажется, что спрайт и снаряды сталкиваются. – maZZZu