本节最终效果演示
文章目录
- 本节最终效果演示
- 系列目录
- 前言
- 给树添加动画
- 摇晃动画
- 效果(后补效果)
- 源码
- 完结
系列目录
前言
欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中,我们将探索如何制作一个类似于七日杀和森林的生存游戏。
本篇内容会比较多,我会分几篇来实现,感兴趣的可以关注一下,以免错过内容更新。
本节主要实现砍树功能,并生成原木。
给树添加动画
摇晃动画
给树添加父物体,配置位置为000,改变相对位置实现偏移,这样可以让树的动画更加通用简单
打开动画
动画按帧数
修改子物体的偏移
后面就复制较弱的摇晃,可以再减低最后两次的摇晃
动画控制器配置
配置动画组件,记得不要让树是静态的(默认素材可能都是静态的),不然动画不会生效
并给树添加刚体组件,勾选Is Kinematic,方便后面做攻击碰撞检测
实现砍树,生命值低生成树木预制体
public class ChoppableTree : MonoBehaviour
{public float treeMaxHealth; // 树木最大生命值public float treeHealth; // 树木当前生命值private Animator animator;private void Start(){treeHealth = treeMaxHealth;animator = GetComponent<Animator>();}private void OnTriggerEnter(Collider other){Debug.Log(other.name);if (other.CompareTag("AxeHead")) TakeDamage(1);}void TakeDamage(int damage){animator.SetTrigger("shake"); // 播放摇晃动画treeHealth -= damage; // 生命值减少if (treeHealth <= 0){TreeIsDead(); // 树木死亡}}// 树木死亡的方法void TreeIsDead(){Vector3 treePosition = transform.position; // 获取树木位置Destroy(transform.parent.gameObject); // 销毁树木的父对象// 创建砍倒后的树木 4是偏移,按自己的情况配置Instantiate(Resources.Load<GameObject>("砍掉的树"), new Vector3(treePosition.x, treePosition.y + 4, treePosition.z), Quaternion.Euler(0, 0, 0));}
}
挂载脚本,配置树默认血量为5
给石斧添加攻击碰撞检测点,记得勾选触发器,并配置标签为AxeHead,默认关闭攻击检测点
修改石斧攻击动画,在攻击合适的点在开启攻击点
效果(后补效果)
实际运行可能没有倒下的效果
源码
源码不出意外的话我会放在最后一节
完结
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,以便我第一时间收到反馈,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!
好了,我是向宇
,https://xiangyu.blog.csdn.net
一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~