Unity 3D Spell casting

本文关键字:casting Spell 3D Unity | 更新日期: 2023-09-27 17:58:29

我在Unity 3D 5.3.5中实现工作法术时遇到问题。我有一个空的游戏对象,它是能力的父对象,它只包含一个名为"拼写"的脚本,还有一个子对象,即粒子系统。出于测试目的,我把它放在资源文件夹中,这样我就可以像这个一样轻松地实例化它

GameObject castedSpell = (GameObject)Instantiate(Resources.Load("Fireball"), transform.position, transform.rotation);
  • transform是指当前Player对象的transform

然而,它正在地面上繁殖,可以通过从变换中移动y轴来固定,但这听起来不是一个好主意,有时粒子会与玩家碰撞,我想将咒语实例化为屏幕中间的十字线:http://prntscr.com/bx91op

十字准线的工作原理与Tera在线中的十字准线完全相同-参考:https://www.youtube.com/watch?v=Jcg4o8IVwlw

我确实有一个十字准线的副本,但我仍然不知道如何实例化它的咒语。当咒语碰撞时,我还需要做一些破坏性的事情,等等。我看到粒子系统具有碰撞属性和事件触发器private void OnParticleCollision(GameObject other),但当我将其附加到主粒子对象时,这似乎根本不起作用http://prntscr.com/bx9356.我的播放器对象具有PlayArea的层标记,当我将碰撞属性设置为不与该特定标记碰撞时,没有任何变化,它仍然会在播放器内部爆炸。

我的问题简要总结如下:

  1. 如何正确实例化一个咒语
  2. 如何旋转它并将其发送到屏幕上的十字线
  3. 如何防止与特定对象发生碰撞
  4. 如何检查碰撞何时发生

Unity 3D Spell casting

由于您的大部分问题已经在评论中得到了回答,我将只讨论第2条:

要使GameObject目标成为特定点,可以使用变换。LookAt()函数。

为了确定所述目标点,最好的选择是从相机/十字线向场景进行光线投射。光线击中的第一个点可以用作你法术的目标点。(只需小心相机和角色之间的墙壁或物体…)