在Unity中向一致的方向推动角色

时间:2018-10-25 00:03:52

标签: c# unity3d rigid-bodies

我有一个射出泡泡的粒子效果,当角色进入泡泡流时,我想创造一种效果,使泡泡始终朝着角色前进的方向移动角色。我将如何去做?我已经在粒子效果中添加了对撞机,并且到目前为止已经尝试了此代码。

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)
        {

        }
    }
}

代码不完整,因为我还没有完整的解决方案。角色确实也配备了刚体。

1 个答案:

答案 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");
    }
}