ひさっしいではなく成仏もしてないソニスだす★
少しの間オトナシクナッチャッタ!だがみな見んなは元気だっただろうねぇ?★
…御本御本、
今回からは船ゲーを創ろうと思うでね★
んでんで、今回は手始めに船舶用重砲を創ったヨ★
スプライト
砲台!
砲弾!
これは照準用(仮)でね★
スクリプト
[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の位置に自身と同じ向きで生成!
}
}
}
}
じゃあ発射実験だおー★
ズレてた!
それに反応も悪いねぇ★
ま、試作品だしこうして記事にできるのなら十分でね★
次回は敵機とか実装したり、この砲台をデバッグをするね★!
ご視聴ありがとうございましたーバイバイ★