弾を撃つプログラム 

Y座標の移動値を渡すことで斜めにも打てるようにした。
BulletInst(0);
BulletInst(1);
BulletInst(-1);

Rigidbody2Dではtransform.forwardはZ値が無いため使用できないらしい。

	void BulletInst(float y)
	{
		//作成
		GameObject obj = Instantiate(bullet, transform.position + new Vector3(0f, 0.25f, 0f), transform.rotation);

		//rigidbody2Dコンポーネントを取得
		Rigidbody2D rb = obj.GetComponent<Rigidbody2D>();
		//画像の向きをユニティちゃんに合わせる
		Vector2 temp = transform.localScale;
		temp.x = transform.localScale.x;
		obj.transform.localScale = temp;
		//ユニティちゃんの向いている向きに弾を飛ばす
		float spd = speed * transform.localScale.x + rigidbody2D.velocity.x;
		rb.velocity = new Vector2( spd, rigidbody2D.velocity.y + y);

		//5秒後に消滅
		Destroy(obj, 5);
	}

360度 敵を生成

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

public class enemyInst : MonoBehaviour
{
	float time;
	//生み出す敵のオブジェクト
	public GameObject EnemyObj;
	//プレイヤーのオブジェクト
	GameObject PlayerObj;

	//半径
	private float _radius = 10;

	// Start is called before the first frame update
	void Start()
    {
		//プレイヤーを探す
		PlayerObj = GameObject.Find("Player");
	}

    // Update is called once per frame
    void Update()
    {
		//時間を計測 1で1秒
        time += Time.deltaTime;
		if (time >= 1) {
			//リセット
			time = 0;

			//敵を生成
			GameObject obj = Instantiate(EnemyObj);
			//初期位置
			Vector3 childPostion = transform.position;

			//何度か
			float angle = Random.Range( 0, 360) * Mathf.Deg2Rad;
			//360度の位置を設定
			childPostion.x += _radius * Mathf.Cos(angle);
			childPostion.y = transform.position.y;
			childPostion.z += _radius * Mathf.Sin(angle);
			//位置を入れる
			obj.transform.position = childPostion;
			//自機の方を向く
			obj.transform.LookAt(PlayerObj.transform);

			//リジットボディの取得
			Rigidbody rb = obj.GetComponent<Rigidbody>();
			//吹き飛ばす
			rb.AddForce(obj.transform.forward * 5.0f, ForceMode.Impulse);
		}
	}
}

マウスの方を向く

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

public class Lookat : MonoBehaviour {
	Plane plane = new Plane();
	float distance = 0;

	void Update()
	{
		// カメラとマウスの位置を元にRayを準備
		var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

		// プレイヤーの高さにPlaneを更新して、カメラの情報を元に地面判定して距離を取得
		plane.SetNormalAndPosition(Vector3.up, transform.localPosition);
		if (plane.Raycast(ray, out distance)) {

			// 距離を元に交点を算出して、交点の方を向く
			var lookPoint = ray.GetPoint(distance);
			transform.LookAt(lookPoint);
		}
	}
}

当たったものを消す

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

public class tama : MonoBehaviour
{

	private void OnCollisionEnter(Collision collision)
	{
		if(collision.gameObject.tag == "Enemy") {
			Destroy(collision.gameObject);
			//Destroy(gameObject);
		}
	}
}

弾を撃つ

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

public class fire : MonoBehaviour
{
	public GameObject Tama;

	// Start is called before the first frame update
	void Start()
	{
	}

	// Update is called once per frame
	void Update()
	{
		if (Input.GetButtonDown("Fire1")) {
			//オブジェクトの作成
			GameObject Obj = Instantiate(Tama);
			//座標を合わせる
			Obj.transform.position = gameObject.transform.position;
			//向きをあわせる
			Obj.transform.forward = gameObject.transform.forward;
			//リジットボディの取得
			Rigidbody rb = Obj.GetComponent<Rigidbody>();
			//吹き飛ばす
			rb.AddForce(transform.forward * 50.0f, ForceMode.Impulse);
			//自動で消す
			Destroy(Obj, 5.0f);
		}
	}
}

オブジェクトの移動と回転

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

public class move : MonoBehaviour
{
	public float speed = 10.0f;
	public Rigidbody rb;

	// Start is called before the first frame update
	void Start()
	{
		rb = GetComponent<Rigidbody>();
	}

	// Update is called once per frame
	void Update()
	{
		//横の入力 -1 ~ 0 ~ 1
		float h = Input.GetAxis("Horizontal");
		//縦の入力 -1 ~ 0 ~ 1
		float v = Input.GetAxis("Vertical");
		//前後に移動
		rb.velocity = transform.forward * v * speed;
		//rb.velocity = transform.forward * v * speed;
		//rb.velocity += transform.right * h * speed;
		//回転
		transform.Rotate(0, h, 0);
	}
}

【Unity】 カメラをマウスで回転させる 上下に制限を付ける

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

//カメラにくっ付けるプログラム
//参考にしたURL
//http://mslgt.hatenablog.com/entry/2017/02/18/020630

public class CameraControll : MonoBehaviour {
	//マウスの座標を保存する用
	private Vector3 lastMousePosition;
	//回転の計算用
	private Vector3 newAngle = new Vector3(0, 0, 0);

	//Update 毎フレーム呼ばれる命令 60fpsなら1秒間に大体60回(必ずではない)
	private void Update () {
		//マウスがクリックされた最初を検知
		if (Input.GetMouseButtonDown(0))
		{
			// マウスクリック開始(マウスダウン)時にカメラの角度を保持(Z軸には回転させないため).
			newAngle = transform.localEulerAngles;
			lastMousePosition = Input.mousePosition;
		} else if (Input.GetMouseButton(0)) {
			//クリックされ続けている
			// マウスの移動量分カメラを回転させる.
			newAngle.y -= (Input.mousePosition.x - lastMousePosition.x) * 0.1f;
			newAngle.x -= (Input.mousePosition.y - lastMousePosition.y) * 0.1f;
			// 上下の移動に制限をかける
			if ( newAngle.x <= -30.0f ) {
				newAngle.x = -30.0f;
			}
			if ( newAngle.x >= 30.0f ) {
				newAngle.x = 30.0f;
			}

			// 新しい回転の数値を代入
			gameObject.transform.localEulerAngles = newAngle;

			lastMousePosition = Input.mousePosition;
		}
	}
}