Unity 实现 曲线运动轨迹(也可以攻击曲线标志等曲线)
2017-12-14 22:35
1476 查看
之前有个需求 屏幕上用鼠标拖动然后就能射出箭 箭随着标线运动
之前想麻烦了 以为贝塞尔曲线能够完成 后来发现 完全不对劲
直接运用最基础的物理知识即可
例如 要实现曲线运动
给定一个点 pos和 方向 dir
和 30 个预设 然后之后的根据重力来计算当前点的位置
接下来每 0.1s 会把当前的预设对应到相应轨迹上的位置
代码如下:
挂到任意地方 然后在你想使用的脚本上 在Update函数中运行SetPos函数
传入 原点 和 方向(这个方向可以不是normal的 会影响每个点的距离)
line为LineScript的引用
这样你就任意时刻任意操控该函数来调节
攻击曲线也是跟这个一样 只需改变方向即可
很简单的脚本 之前想麻烦了。。。
看来以后不能想的特复杂。。。
之前想麻烦了 以为贝塞尔曲线能够完成 后来发现 完全不对劲
直接运用最基础的物理知识即可
例如 要实现曲线运动
给定一个点 pos和 方向 dir
和 30 个预设 然后之后的根据重力来计算当前点的位置
接下来每 0.1s 会把当前的预设对应到相应轨迹上的位置
代码如下:
using UnityEngine; using System.Collections.Generic; public class LineScript : MonoBehaviour { private Transform[] points; public int pos_num = 30; public GameObject linePrefab; void Start() { points = new Transform[pos_num]; for (int i = 0; i < pos_num; ++i) { GameObject obj = GameObject.Instantiate(linePrefab); points[i] = obj.transform; } } public void SetPos(Vector3 orgPos, Vector3 v, float interval = 0.05f, bool isUseGravity = true) { float g = isUseGravity ? -9.8f : 0; for (int i = 0; i < pos_num; i++) { float t = v.magnitude * interval * i; Vector3 Vv = Vector3.Dot(v, Vector3.up) * Vector3.up; Vector3 Vh = Vector3.Dot(v, Vector3.right) * Vector3.right; float x = Vh.x * t; float y = Vv.y * t + 0.5f * g * t * t; if (points != null) { points[i].position = orgPos + new Vector3(x, y, 0); } } } }
挂到任意地方 然后在你想使用的脚本上 在Update函数中运行SetPos函数
传入 原点 和 方向(这个方向可以不是normal的 会影响每个点的距离)
line.SetPos(obj.transform.position, dir);
line为LineScript的引用
这样你就任意时刻任意操控该函数来调节
攻击曲线也是跟这个一样 只需改变方向即可
很简单的脚本 之前想麻烦了。。。
看来以后不能想的特复杂。。。
相关文章推荐
- 在Unity中实现可以自由观察无规则高速运动物体的相机的思路
- Unity中利用贝塞尔曲线来实现3D中的曲线运动
- Unity 进行曲线轨迹自定义,以及根据自定义曲线轨迹运动
- Unity 3d让物体成弧线运动(可以制作炮弹发射的轨迹)
- unity中类似NGUI或UGUI的onClick方法的可以调用任何公有方法的实现
- unity实现按钮和攻击对象的选定
- 58.贝赛尔曲线初步(三) - 实现添加至购物车的运动轨迹
- js实现小球抛物线轨迹运动的两种方式
- unity抛物线,平均速度下的运动轨迹
- unity发射弓箭轨迹的实现
- android实现可以滑动的平滑曲线图
- Unity模型编辑器实现仿炉石传说攻击箭头
- 实现精灵沿着圆形轨迹运动
- 让精灵按照自己设定的运动轨迹行动(曲线移动)。(以椭圆轨迹为例)。
- UGUI实现UI精灵由小到大渐变效果——配合unity动画曲线
- unity使用AnimationCurve实现RPG中攻击与受伤时的分数的动态效果ScoreFlash
- Android Animation实现元素在屏幕上按照指定轨迹运动,以及出现NullPointerException的解决方案
- unity实现第一视角的跟随物体运动
- Java简单的台球运动轨迹效果实现
- Java_Swing实现小球沿正弦曲线运动的代码