喷口的方向本质上是由Update节点中的SDF Center在决定,对每一个粒子施加力的方向也是指向了该position。在变量管理窗口中点击加号,新建一个Vector 3变量,并将该变量拖到蓝图中,复制给Update阶段的Conform to Signed Distance Field-->Field Transform -->Center,同时需保证该变量的Exposed被勾选上了,这样才能在脚本中对该变量进行访问。
新建一个C#脚本,在头部声明使用UnityEngine.VFX,在类中建立两个变量,一个GameObject类型,一个VisualEffect类型,第一个变量我们将会取其tranform中的position,第二个变量将会访问我们的粒子组件,最后将position赋值给上一步蓝图中新建的Destination变量即可,赋值方式和访问着色器的语法基本一致。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VFX;
public class FireDir : MonoBehaviour
{
public GameObject _controller;
private VisualEffect _visualEffect;
// Start is called before the first frame update
void Start()
{
_visualEffect = GetComponent<VisualEffect>();
}
// Update is called once per frame
void Update()
{
_visualEffect.SetVector3(&#34;Destination&#34;,_controller.transform.position);
}
}
脚本建立完成后,将此脚本挂载到该粒子组件所属的GameObject下。在场景中新建一个sphere,并将此sphere赋值给自定义脚本中的_controller变量(直接拖到脚本的对应位置即可)。至此,我们已经完成了使用脚本访问VFX蓝图中的变量。