Notifications
Article
あらぬ方向からの発射
Published a year ago
212
0
3WAY違う4WAYや!
ちょこちょこ改良入ってます。まず、当たり判定、アイテム当たり判定、グレイズ(かすり)判定を作り(内二つは自機が邪魔で見えないけど)、当たり判定の方を親にして自機と判定を追従するように変更。
さらにスクリプトを更新し、弾発射用のスクリプトとプレイヤーコントロールを統合・・・
したまでは良かったのだが、動画の通り3WAYにならないのだ。2Dシューティングのチュートリアルを参考に自機側でも実装しようと思ったのだが・・・
一応コード公開しておきまする。
  • PlayerControl.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControl : MonoBehaviour {

Spaceship spaceship;
private int timecount;

void Start()
{
spaceship = GetComponent<Spaceship>();
}

// Update is called once per frame
void Update () {

//プレイヤーの移動
float x = Input.GetAxisRaw("Horizontal");
float y = Input.GetAxisRaw("Vertical");

Vector2 direction = new Vector2(x, y).normalized;
spaceship.Move(direction);

//弾発射処理

const int interval = 5;

if (Input.GetButton("Fire1"))
{
timecount++;

if (timecount > interval)
{
for (int i = 0; i < transform.childCount; i++)
{
timecount = 0;
Transform shotPosition = transform.GetChild(i);
spaceship.shot(shotPosition);
}

}
}

}
}

  • Bullet_SK.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Ballet_SK : MonoBehaviour {

public int speed = 10;

void Start()
{
}

void Update()
{
GetComponent<Rigidbody2D>().velocity = transform.up.normalized * speed;
}
}

  • Spaceship.cs
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[RequireComponent(typeof(Rigidbody2D))]
public class Spaceship : MonoBehaviour {

public float speed;
public float shotdelay;
public GameObject bullet;

public void shot(Transform origin)
{
Instantiate(bullet, origin.position, origin.rotation);
}

public void Move(Vector2 direction)
{
GetComponent<Rigidbody2D>().velocity = direction * speed;
}

internal void shot(object shotPosition)
{
throw new NotImplementedException();
}
}
Master.typeX
Unityが全く使えない変人 - Other
18
Comments