unityで2Dの縦スクロールシューティングを作っています。(東方みたいな)
その中でレーザーを実装するために、trailrendererを使って軌跡を表示し、その軌跡のmeshをBekeMesh関数を使って作り、作ったmeshをmeshcoliderに入れて当たり判定を作ったのですが、playerと当たっても反応しません。反応する方法やこの方法以外にレーザーを表現する方法を教えてください。
実現したいこと
ここに実現したいことを箇条書きで書いてください。
- ▲▲機能を動作するようにする
発射位置からだんだんレーザーが長くなるようにする。
ちゃんとレーザーの形を実現する。
playerとレーザーを正しく接触させる。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;
public class EnemyLaser : MonoBehaviour
{
private GameObject childObj;
// Trail Rendererコンポーネント TrailRenderer trailRenderer; // MeshColliderコンポーネント MeshCollider meshCollider; // MeshFilterコンポーネント MeshFilter meshFilter; void Start() { childObj = transform.GetChild(0).gameObject; // Trail Rendererコンポーネントを取得 trailRenderer = GetComponent<TrailRenderer>(); // MeshColliderコンポーネントを取得 meshCollider = childObj.GetComponent<MeshCollider>(); // MeshFilterコンポーネントを取得 meshFilter = childObj.GetComponent<MeshFilter>(); } void Update() { // Trail Rendererで作成したmeshを取得 Mesh mesh = new Mesh(); trailRenderer.BakeMesh(mesh); // MeshFilterのMeshを更新 meshFilter.mesh = mesh; // MeshColliderのMeshを更新 meshCollider.sharedMesh = mesh; // MeshColliderの位置を調整 childObj.transform.position = -1 / 2 * transform.position; }
}
C#
試したこと
meshcoliderとRigidbody2Dが競合してしまうため(なぜ?)Rigidbodyがついているオブジェクトの子オブジェクトにmeshcoliderをつけてplayerとの判定をとろうとした。
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.18f1
あなたの回答
tips
プレビュー