unity3d中如何实现碰撞效果

2015年01月25日 10:58 0 点赞 0 评论 更新于 2017-05-09 12:07

只是泛泛而谈,大家可能不太理解在Unity3D中如何实现碰撞效果。下面我们通过一个具体例子来学习。

假设有一个锤子正向右移动追赶小猪。当锤子追上小猪时,锤子会击打小猪的脑袋,随后锤子蹦蹦跳跳,表示胜利,而小猪则会被打晕。若游戏结束时锤子没有追上小猪,锤子会很失落。目前,所有动作(如奔跑动作、跳跃动作等)都已制作完成,接下来就是实现碰撞效果。

方法一:使用“静态触发碰撞器”的方式

步骤如下

  1. 添加碰撞器:为两个角色都添加碰撞器。碰撞器的类型可根据角色特点和个人喜好选择,这里建议使用Sphere Collider(圆形碰撞器)。
  2. 添加刚体属性:任选一个角色添加刚体属性,并关闭重力选项。
  3. 勾选Is Trigger:将未添加刚体的另一个角色的碰撞器的Is Trigger选项勾选。
  4. 修改Tag:将小猪角色对象的Tag改为自定义名称,例如“Monster”。
  5. 添加碰撞检测代码:以下是具体的代码示例,用于进行碰撞检测。
    function OnTriggerEnter(obj:Collider ) {
    // 普通怪物碰撞
    if( obj.gameObject.tag == "Monster" ) {
    // 停止位移 播放你想要的动作
    }
    }
    
  6. 挂载代码:将上述代码挂载到锤子对象上。

方法二:利用两个对象中心距离进行距离判断

此方法暂未详细展开,后续可根据具体需求进一步完善逻辑,通过计算两个对象中心的距离,当距离小于一定阈值时判定为发生碰撞,进而执行相应的碰撞效果代码。

作者信息

feifeila

feifeila

共发布了 570 篇文章