首先展示效果:
unity3d 制作开门动画以及收集钥匙实现开门
第一步,我们在Hirarchy面板上新建三个cube,再按照一定的比例调整,制作完成一个门框,然后制作一个空物体并命名为Doorframe,将三个cube合并成门框一个整体:
然后再创建一个cube调整大小,在将合适的门移动至门框之前,创建一个空物体(doorcenter)并将此空物体的位置移动至门的右边缘中心位置,同时将门作为doorcenter的子物体,这里的操作是为后面的开门动画制作做铺垫。
开门是需要围绕门一边的轴来旋转,如果不设置空物体用来辅助旋转,那门将以自生中心为轴来旋转则达不到需要的效果。
接下来制作开门动画:
点击Windows->Animation->Animation,出现Animation面板,在Hierarchy面板中选中doorcenter
点击Creat,命名之后会自动生成:
左边可以理解为编辑动画,右边则用来设置动画状态等。并注意点击door,将Loop Time(循环播放)取消勾选:
在出现的Animation面板中输入帧率30:
接下来点击上图Preview右边红点开始录制,接下来选中doorcenter,按快捷键E,点击绿轴进行旋转,旋转角度任意,点击播放键即可查看效果,开门速度太快则拖动
并将时间间隔为两秒,整体如下:
接下来打开动画机
面板中以及自动为你生成了先前编辑的动画door,首先我们点击将door删去,右键点击Creat State->empty,并且命名为Idle,因为门不能刚开始就打开,需要玩家找到钥匙才能打开,然后在家将做好的动画拖进面板,并且右键点击Idle->make transition链接至door。
点击Parameters面板为动画播放设置条件,这里选中Trigger(触发),开门动画只需播放一次,并且将它命名为opening:
接下来在点击idle与door之间的连线,在右侧inspector中,取消勾选
同时点击conditions中点击+,设置Trigger:
门这一板块结束,速度解决钥匙,创建cube,添加Sphere Collider组件,点击Edit Collider调整碰撞范围(尽量调大),然后勾选Is Trigger。
编写钥匙代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class keyhold : MonoBehaviour
{
// Start is called before the first frame update
public Transform player;//获取玩家组件
private void OnTriggerEnter(Collider other)//这里Other指的是与钥匙接触的物体(即玩家)
{
if(other.transform==player)
{
other.GetComponent<player>().IsKeyhold = true;//采用GetComponent方法获取玩家脚本中的bool值并且进行修改
Destroy(gameObject);
}
}
}
对于门,选取空物体doorcenter,添加Box Collider组件,同样勾选Is Trigger,将碰撞范围调整至下图所示
我们希望的是玩家在拿到钥匙的前提下,进去该碰撞区域,门将自动打开,未拿到钥匙则无反应
门的代码(添加到doorcenter上):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorOpen : MonoBehaviour
{
Animator animator;
// Start is called before the first frame update
public Transform player;
private void Start()
{
animator = GetComponent<Animator>();
}
private void OnTriggerEnter(Collider other)
{
if(other.transform==player&&other.GetComponent<player>().IsKeyhold)//玩家拿到钥匙,进入碰撞区,播放动画
{
animator.SetTrigger("opening");
}
}
}
玩家代码中只需要加入以上代码即可。
最后将我们的玩家拖放进doorcenter以及key的player位置就大功告成!
文章来源:https://www.toymoban.com/news/detail-411977.html
文章来源地址https://www.toymoban.com/news/detail-411977.html
到了这里,关于unity3d 制作开门动画以及收集钥匙实现开门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!