[Mission Aegis]船ゲーすんどー 1

ひさっしいではなく成仏もしてないソニスだす★

少しの間オトナシクナッチャッタ!だがみな見んなは元気だっただろうねぇ?★

…御本御本、

今回からは船ゲーを創ろうと思うでね★

んでんで、今回は手始めに船舶用重砲を創ったヨ★

スプライト

砲台!

砲弾!

これは照準用(仮)でね★

スクリプト

[Bullet.cs]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{
    Rigidbody2D RB;//Rigidbodyを格納用
    float LifeTime = 10;//この秒数が過ぎたら消すよ
    public float Speed = 1;//速度だ

    void Start()
    {
        RB = GetComponent<Rigidbody2D>();//RBにこのScがアタッチされてるRigidbodyを取得するよ
    }
    void Update()
    {
        //色々と面倒なのでFixedの方を使うよ
    }
    private void FixedUpdate()
    {
        RB.AddForce(transform.up*(Speed*-10));//上方向にSpeed×⁻10のチカラを与えるよ
        if(LifeTime > 0)//LifeTimeが0より大きければ…
            //つまりタイマー
        {
            LifeTime -= Time.deltaTime;//LifeTimeから時間分引く
        }
        else//0以下であれば…
        {
            Destroy(gameObject);//削除
        }
    }
    private void OnTriggerEnter2D(Collider2D collision)//何かにぶつかったら
    {
        Destroy(gameObject);//削除
    }
}

[SightSystem.cs]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SightSystem : MonoBehaviour
{
    Vector3 Mouse;//マウスの座標格納用
    public float Speed = 1;//速度だよ
    Rigidbody2D RB;//RigidBody格納用
    void Start()
    {
        RB = GetComponent<Rigidbody2D>();//RBにこのScがアタッチされてるRigidbodyを取得するよ
    }
    private void FixedUpdate()
    {
        Mouse = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position;//マウスの座標を取得するらしいね
        //実のところ詳しいことはワタも分からん!
        Mouse.z = 1;//とりあえずMouseのzを1に固定するよ
        transform.rotation = Quaternion.FromToRotation(Vector3.up, Mouse);//Mouseの向きに上方向を向けるよ
        Mouse = transform.localEulerAngles;//一旦Mouseに戻すよ
        Mouse.x = 0;//とりあえずMouseのxを0に固定するよ
        Mouse.y = 0;//とりあえずMouseのyを0に固定するよ
        transform.eulerAngles = Mouse;//結果を本体に代入だ
        RB.AddForce(transform.up * Speed);//あとは上向きに進むだけ!
    }
}

[Cannon.cs]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Cannon : MonoBehaviour
{
    public GameObject Sight;//照準格納用
    public GameObject Bullet;//砲弾
    public GameObject Muzzle;//銃口格納用
    void Start()
    {
        
    }
    private void FixedUpdate()
    {
        //照準に合わせる処理群だ
        Vector3 SightPos = Camera.main.ScreenToWorldPoint(Sight.transform.position) - transform.position;//マウス座標をSightPosに代入
        SightPos.z = 0;//SightPos.zを0に固定するよ
        Vector3 Rotate = Sight.transform.position;//RotateにSightの位置を入れるよ
        transform.rotation = Quaternion.FromToRotation(Vector3.up*-1, Rotate);//上部分をRotateの位置に向けるんだと思う…多分
        Rotate = transform.eulerAngles;//Rotateに一回向きを代入しておくよ
        Rotate.x = 0;//
        Rotate.y = 0;//xとyを0に固定!
        transform.eulerAngles = Rotate;//euterAngleにRotateを
        //発砲する処理群
        if (Input.GetMouseButtonDown(0))//左クリックをしたら…
        {
            if (Bullet&&Muzzle)//BulletとMuzzleがちゃんと格納されていたら
            {
                Instantiate(Bullet, Muzzle.transform.position, transform.rotation);
                //BulletをMuzzleの位置に自身と同じ向きで生成!
            }
        }
    }
}

じゃあ発射実験だおー★

ズレてた!

それに反応も悪いねぇ★

ま、試作品だしこうして記事にできるのなら十分でね★

次回は敵機とか実装したり、この砲台をデバッグをするね★!

ご視聴ありがとうございましたーバイバイ★

  • 0
  • 0
  • 0

ウオユツンエ=ソニス

作者のページを見る

寄付について

「novalue」は、‟一人ひとりが自分らしく働ける社会”の実現を目指す、
就労継続支援B型事業所manabyCREATORSが運営するWebメディアです。

当メディアの運営は、活動に賛同してくださる寄付者様の協賛によって成り立っており、
広告記事の掲載先をお探しの企業様や寄付者様を随時、募集しております。

寄付についてのご案内