2017-08-07 9 views
0

パーティクルシステムをスクリプトのコライダーに接続する方法を知っていますか? 私は私のキャラクターを持っており、私は頭のタップの位置に血液粒子システムを持っていたい。私は以下のコードでこれを行うことができましたが、今度はキャラクターと共にコライダーと一緒に移動する必要があります。私がキャラクターを動かすと(私はこれに対してLeanTouchスクリプトを使用します)、血液はシーンで作成された場所に残されています。 私が使用するコードは、それがカメラの上にある:パーティクルシステムをコライダーに接続する方法またはパーティクルシステムを文字で移動する方法

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

public class ActionOnTapOrClick : MonoBehaviour { 

    public ParticleSystem blood; 

    private void Update() 
    { 

     if(Input.GetMouseButtonDown(0)) 
     { 
      Ray toTouch = Camera.main.ScreenPointToRay(Input.mousePosition); 
      RaycastHit rhInfo; 
      bool didHit = Physics.Raycast(toTouch, out rhInfo); 
      if(didHit && rhInfo.collider != null) 
      { 
       Debug.Log("You've tapped on the " + rhInfo.collider.name); 
       blood.transform.position = rhInfo.point; 
       Instantiate(blood, rhInfo.point, transform.rotation); 
      } 
      else { Debug.Log("You need to tap on the head!"); } 

     } 
    } 
} 
+0

パーティクルの親をコライダーに設定する必要があります。最初にあなたの衝突位置を確認し、親をcolliderに設定してその座標にインスタンス化します。 – BlackMB

+0

また、衝突の法線を取得してパーティクルの回転を設定することもできます。 – BlackMB

答えて

0

はあなたが右のそれをやっている文字オブジェクト

2

に粒子を添付する必要があります。あなたは子オブジェクトとして配置する必要があります

1

var ps = Instantiate(blood, rhInfo.point, transform.rotation); ps.transform.parent = transform; は、だからあなたのUnityのバージョンに応じて、thisthisをチェックアウト:あなたがやらなければならないことは、あなたがこのような何かを行うことができますので、子としてあなたの血のオブジェクトを追加することです。これはうまくいくはずです。

Instantiate(blood, rhInfo.point, transform.rotation, rhInfo.point.transform); 
関連する問題