リスポーンやショット

レイヤーベースでの当たり判定の割り振りをしっかり考えた上で設計すると誤動作が防げる
プレーヤーならplayer。弾ならbullet。敵ならenemy等あらかじめしっかりレイヤーを分けておくと便利

リスポーンさせる弾などはプレハブの段階でレイヤーに分けておく事が重要。

自分の撃った弾と弾の間隔が狭いと弾同士が衝突しあって狙った方向へ飛ばない現象が起きる。
この場合bulletレイヤーに分けておけばbulletレイヤー同士の衝突をオフにすることで、そういった現象は防げる。
また自機ショットの発生源が自機のオリジンである場合、プレイヤーとショットが衝突し、コレも方向が変になる。
同様にplayerレイヤーとbulletレイヤー同士の衝突をなくせば変な方向に飛ぶ現象は避けられる

これらはあらかじめプログラム前に決めておかなければスクリプトに多大な影響を与える事に注意する


注意!!レイヤーベースコリジョンの衝突情報はプロジェクトファイルに保存される
シーンファイルに保存されるわけで無い事に注意。つまり全シーン共通になる


砲台からショットを撃つ


<?php


using UnityEngine;
using System.Collections;

public class koteiHoudai : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    public    float    rotSpeed=100f;
    public    float    bulletSpeed=50f;
    public    Rigidbody bulletPrefab; 
    
    // Update is called once per frame
    void Update () {
        
        //入力により砲台の向きを変える
        
        float rot = Input.GetAxisRaw("Horizontal") * Time.deltaTime * rotSpeed;
        transform.Rotate(0f, rot, 0f);
        
        //砲台の向きを算出
        var forward = transform.TransformDirection(Vector3.forward);    //単純にtransform.forwardでも出てくる
        forward =forward.normalized;
        
        if (Input.GetButton ("Fire1")){
            Rigidbody clone = Instantiate(bulletPrefab,transform.position,transform.rotation) as Rigidbody;
            //clone.AddForce
            clone.velocity=forward*bulletSpeed;
        }
    }
}

?>


メニュー



  • 最終更新:2014-06-13 12:10:25

このWIKIを編集するにはパスワード入力が必要です

認証パスワード