Unity 3D SplineMesh样条线工具扩展,链条制作,履带转动,绳子制作,调整弯曲度及一些好用的示例

SplineMesh样条线工具扩展


Spline Mesh工具在Unity商店是免费的

Unity商店资源链接

下面是我自己做的一些示例,用起来也很方便

请添加图片描述

一、锁链

制作的第一个示例是一个链条
请添加图片描述
在这里插入图片描述
解释第一个参数与第二个参数用法:
循环物体: 每隔一个变化的物体,比如链条只需要一个环就可以了如果链条有多种材质或者中间有破损的链条可以加进去
循环旋转: 每隔一个物体需要怎样旋转,链条就需要两个,一个需要转90°,一个不需要
剩余的参数都好理解,自己用一下就知道了

二、统一控制链条

请添加图片描述
在这里插入图片描述在这里插入图片描述

这个没什么好说的,就是三个循环物体用的同一条样条线
注意:结构不要放错

三、游动

请添加图片描述
在这里插入图片描述

原本的例子中有,我做了改变,不知道算不算画蛇添足hh

四、制作一条电线

请添加图片描述
在这里插入图片描述

这个例子中首尾两个位置都是个物体,可以拖动物体改变线 而不是调整数值.

五、线躲避

请添加图片描述
我的一个项目制作过程中有这么一个需求,不知道大家能不能用到
首先 线用的是第四个例子中的线
如何创建一个躲避点
这里需要加入一个提前设定好的碰撞体

1.创建一个新的Cube,在这个Cube上加入一个组件:SplineElude
在这里插入图片描述
这时,Cube会自动创建一个躲避点
在这里插入图片描述在这里插入图片描述

2.调整躲避点到合适的位置,比如要从下面躲避,就把球放在下面,当线穿过Cube时(也就是穿模了)会在你设置的躲避点经过,避免穿模

3.如果还是穿模,那就继续调整躲避点或者多增加(复制)几个躲避点。代码会自动计算与哪个躲避点距离最近 进行躲避
这里注意,不要移动躲避点的父物体,调整躲避点需要直接选中躲避点本体,也就是说先创建好碰撞器,调整好碰撞位置再添加组件进一步设置,否则可能会出现意想不到的结果
在这里插入图片描述
点击Play运行,躲避结果:
在这里插入图片描述在这里插入图片描述

4.如果还是穿模,还可以通过调整躲避曲率调整细节。
在这里插入图片描述在这里插入图片描述


SplineMesh扩展示例下载链接

到这里 我根据样条线自己制作的例子已经展示完了,如果大家觉得有用可以献出1积分下载,也可以私信我,我免费分享给大家!

  • 14
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
以下是 Unity履带式移动的示例代码,可以参考: ```csharp public class TankMovement : MonoBehaviour { public float speed = 12f; // 履带移动速度 public float turnSpeed = 180f; // 车体旋转速度 public AudioSource movementAudio; // 移动音效 public AudioClip engineIdling; // 怠速音效 public AudioClip engineDriving; // 行驶音效 public float pitchRange = 0.2f; // 音效播放音调范围 private string movementAxisName; // 履带移动轴名 private string turnAxisName; // 转向轴名 private Rigidbody rigidbody; // 刚体组件 private float movementInputValue; // 履带移动输入值 private float turnInputValue; // 转向输入值 private float originalPitch; // 原始音调 private void Awake() { rigidbody = GetComponent<Rigidbody>(); } private void OnEnable() { rigidbody.isKinematic = false; movementInputValue = 0f; turnInputValue = 0f; } private void OnDisable() { rigidbody.isKinematic = true; } private void Start() { movementAxisName = "Vertical"; turnAxisName = "Horizontal"; originalPitch = movementAudio.pitch; } private void Update() { movementInputValue = Input.GetAxis(movementAxisName); turnInputValue = Input.GetAxis(turnAxisName); } private void EngineAudio() { if (Mathf.Abs(movementInputValue) < 0.1f && Mathf.Abs(turnInputValue) < 0.1f) { if (movementAudio.clip == engineDriving) { movementAudio.clip = engineIdling; movementAudio.pitch = Random.Range(originalPitch - pitchRange, originalPitch + pitchRange); movementAudio.Play(); } } else { if (movementAudio.clip == engineIdling) { movementAudio.clip = engineDriving; movementAudio.pitch = Random.Range(originalPitch - pitchRange, originalPitch + pitchRange); movementAudio.Play(); } } } private void FixedUpdate() { Move(); Turn(); EngineAudio(); } private void Move() { Vector3 movement = transform.forward * movementInputValue * speed * Time.deltaTime; rigidbody.MovePosition(rigidbody.position + movement); } private void Turn() { float turn = turnInputValue * turnSpeed * Time.deltaTime; Quaternion turnRotation = Quaternion.Euler(0f, turn, 0f); rigidbody.MoveRotation(rigidbody.rotation * turnRotation); } } ``` 这是一个简单的控制履带式坦克移动的脚本,其中包括了履带移动、车体旋转、音效等功能。你可以将其添加到坦克游戏对象上,并配置相应的参数来实现履带式移动效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐沢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值