- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作一个运动行为在图中显示为红色的弹丸。
我现在知道和拥有的是两个向量;开始和结束。
最终目标是在迭代时使弧线具有一些随机性,并以 lerp 方式改变射弹速度。我以前做过几代线性运动,但没有这样的。
如果我的问题感觉像是要求您为我做我的工作(我通常害怕作为新手编码员提出问题),我可以就我应该研究哪些方法/命令提供一些提示和提示吗?语言为 C#,Unity 版本为 5.6
编辑#1
在获得一些头部方向之后,我可以实现更接近最终目标功能的东西。
Blue linear line is just representation of distance and angle between A(initiation point) and B(target). The red arc is the trajectory I'm willing to make my projectile to move as.
public Transform[] controlPoints = new Transform[4];
public LineRenderer lineRenderer;
private int curveCount = 0;
private int SEGMENT_COUNT = 50;
private void DrawCurve()
{
for (int j = 0; j < curveCount; j++)
{
for (int i = 1; i <= SEGMENT_COUNT; i++)
{
float t = i / (float)SEGMENT_COUNT;
int nodeIndex = j * 3;
Vector3 pixel = CalculateCubicBezierPoint(
t,
controlPoints[nodeIndex].position,
controlPoints[nodeIndex + 1].position,
controlPoints[nodeIndex + 2].position,
controlPoints[nodeIndex + 3].position);
lineRenderer.positionCount = (((j * SEGMENT_COUNT) + i));
lineRenderer.SetPosition((j * SEGMENT_COUNT) + (i - 1), pixel);
}
}
}
private Vector3 CalculateCubicBezierPoint(float t, Vector3 start, Vector3 modA, Vector3 modB, Vector3 end)
{
float u = 1 - t;
float t2 = Mathf.Pow(t, 2);
float u2 = Mathf.Pow(u, 2);
float t3 = Mathf.Pow(t, 3);
float u3 = Mathf.Pow(u, 3);
Vector3 p = u3 * start;
p += 3 * u2 * t * modA;
p += 3 * u * t2 * modB;
p += t3 * end;
return p;
}
最佳答案
您应该使用 AnimationCurve。
您可以在检查器中编辑“图形曲线”(公共(public)变量 AnimationCurve),然后使用此脚本沿路径移动对象。
using UnityEngine;
using System.Collections;
public class AnimationPath : MonoBehaviour
{
public AnimationCurve XCurve;
public float TotalTravelTime = 5.0f;
public float TravelSpeed = 50.0f;
public float XRange = 10.0f;
// Use this for initialization
void Start ()
{
StartCoroutine("Travel");
}
IEnumerator Travel()
{
float ElapsedTime = 0.0f;
while(ElapsedTime < TotalTravelTime)
{
float XPos = XCurve.Evaluate(ElapsedTime/TotalTravelTime) * XRange;
transform.position = new Vector3(XPos, transform.position.y, transform.position.z + TravelSpeed * -Time.deltaTime);
yield return null;
ElapsedTime += Time.deltaTime;
}
}
}
关于unity3d - 弹道/飞行路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46171048/
在休眠状态挂接到我的JBoss AS 7.1之前,我试图在应用程序中运行flyway。我尝试使用@javax.ejb.Startup批注,但是在初始化Hibernate和检查数据库方案之后,此批注便会
我想将 div 移动到另一个 div 中。现在它们飞过整个页面。 我应该在代码中更改什么才能使其正常工作? $(document).ready(function() { $('.balloon')
我是一名优秀的程序员,十分优秀!