我有一个射出泡泡的粒子效果,当角色进入泡泡流时,我想创造一种效果,使泡泡始终朝着角色前进的方向移动角色。我将如何去做?我已经在粒子效果中添加了对撞机,并且到目前为止已经尝试了此代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeyserPush : MonoBehaviour {
public GameObject Player;
public float Speed;
private void OnTriggerEnter(Collider other)
{
if(other.gameObject == Player)
{
//other.transform.Translate((Vector3.up * Time.deltaTime), Space.World);
Player.transform.Translate(Vector3.up * Time.deltaTime * Speed);
print("Pushing");
}
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject == Player)
{
}
}
}
代码不完整,因为我还没有完整的解决方案。角色确实也配备了刚体。
答案 0 :(得分:0)
根据this link底部的表格,如果粒子和播放器都具有Rigidbody
,则最好使用OnCollisionEnter()
。
您可以在每次碰撞时向玩家的Rigidbody
施加力,使粒子的运动方向如下:
private void OnCollisionEnter(Collider other)
{
if(other.gameObject == Player)
{
//other.transform.Translate((Vector3.up * Time.deltaTime), Space.World);
Player.GetComponent<Rigidbody>().AddForce(targetDirection * Speed);
print("Pushing");
}
}