実現したいこと
■実現したいこと
・マウスの位置取得
・玉の発射位置取得
・発射する角度 = (マウスの位置取得 - 玉の発射位置取得).normalized;
・玉を移動させる
玉.velocity = 発射する角度 * 任意のスピード;
※角度が一緒であれば、玉の飛距離、スピードを一緒にしたい
発生している問題・分からないこと
角度が一緒であれば、玉の飛距離、スピードを一緒にしたいです。
normalized関数がやっているのは、ベクトルの正規化?の認識です。
■今のコードで起こっていること
・マウスの位置が遠い:球の飛距離が大きい、スピードが速い
・マウスの位置が近い:球の飛距離が小さい、スピードが遅い
※およそマウスのでクリックした場所で消えます(玉の寿命を設定している為)。遠くても近くても、角度が同じなら同じように進んでほしい
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class bulle : MonoBehaviour { private uint lifeTime = 0; private const uint MAX_LIFE_TIME = 100; private Vector3 direction; private float SPEED = 30f; private Rigidbody2D yasu; // Start is called before the first frame update void Start() { yasu = GetComponent<Rigidbody2D>(); Vector3 mousePosOnScreen = Input.mousePosition; Vector3 mousePosOnWorld = Camera.main.ScreenToWorldPoint(mousePosOnScreen); direction = (mousePosOnWorld - transform.position).normalized; } // Update is called once per frame void Update() { yasu.velocity = direction * SPEED; //玉の寿命がきたら消す if (lifeTime > MAX_LIFE_TIME) { Destroy(this.gameObject); return; } ++lifeTime; } private void OnCollisionEnter2D(Collision2D other) { if ((other.gameObject.tag == "Item") || (other.gameObject.tag == "Item2")) { Destroy(other.gameObject.transform.parent.gameObject); } } }
試したこと・調べたこと
上記の詳細・結果
同じように困っている人がいないか調べたが、解決せず。
知っている人がいれば教えてほしいです。よろしくお願いします。
補足
特になし

0 コメント