「はじめてのWii」にあるタンクをUnityで作りたいのですが、ポインターの位置に弾を発射する挙動について困っています。

実現したいこと

画面上にポインター(マウスカーソル)を表示して、左クリックでポインターの位置に弾を発射できるようにしたい。

前提

現在、Unity(3D)でマップ(Map)とタンク(GameObject)と弾(bullet)は作れました。弾はプレハブに入れています。ポインターとなるアイコン画像はUnity内に保存済みで、マウスカーソルの位置にポインターを表示することはできました。しかし、タンクからそのポインターの位置に弾を発射するScriptを書いたところ、自分が思う挙動をとってくれません。
プレイ画面はマップをほぼほぼ真上から見ている感じにする予定です。
タンクはBody、Head、Nozzleで構成されていて、Nozzleオブジェクトから発射されるようにしたいです。

該当のソースコード

以下のコードが自分が作った発射プログラムです。(C#)

using System.Collections;
using System.Collections.Generic;
using UnityEditor.Experimental.GraphView;
using UnityEngine;

public class Shooting : MonoBehaviour
{
public GameObject bulletPrefab;
public float bulletSpeed = 10.0f;

// Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { //マウスの左クリックを検出 if(Input.GetButtonDown("Fire1")) { Shoot(); } } void Shoot() { // マウスカーソルの位置をワールド座標に変換 Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); // 弾の位置をマウスカーソルの位置に設定 transform.position = mousePosition; //弾のインスタンスを作成し、発射位置に配置 GameObject bullet = Instantiate(bulletPrefab, transform.position, Quaternion.identity); //弾の方向を設定 Vector3 direction = (mousePosition - transform.position).normalized; //弾に速度を与える Rigidbody rb = bullet.GetComponent<Rigidbody>(); rb.velocity = direction * bulletSpeed; }

試したこと

このコードで実際にプレイして、左クリックをすると弾が謎の座標から出現して、ただ落ちるだけとなってしまいました。

補足情報(FW/ツールのバージョンなど)

初めての質問で分かりにくいかもしれませんが、答えていただけると幸いです。

コメントを投稿

0 コメント