[英]How to move objects with perspective camera and rotating the camera in Unity3D?
[英]Unity3D - How to move objects in a Sine wave independantly?
在我的游戏中,我的目标会直线产生并朝玩家移动。 我使用以下代码:
transform.LookAt(target.transform);
transform.position = Vector3.MoveTowards(transform.position, target.transform.position, speed);
这会使目标回到玩家身上并向他们移动。
我决定尝试使它们以正弦波运动,因此看起来比直线移动更无聊,我添加了一行代码,现在变成:
transform.LookAt(target.transform);
transform.position = Vector3.MoveTowards(transform.position, target.transform.position, speed);
transform.position += transform.right * Mathf.Sin (Time.time * 3f) * 1f;
现在效果很好,我的敌人朝着玩家行进时会左右移动,除了它们都同时遵循相同的路径,从而导致大量目标以某种编排的方式左右移动。
我相信这是因为我使用Time.time
在Mathf.Sin
一段代码,这导致使用相同的值,以产生一个正弦波的所有目标。
我尝试更改为Time.deltaTime
并将Time.time
变量更改为2个数字之间的Random.Range
变量,但是它们要么不起作用,阻止我的目标移动,要么使它们看起来像在振动。 我也尝试过使用动画,但是由于我的MoveTowards
代码,这也不起作用。
那么,是否有一种方法可以使GameObject
以正弦波的方式左右移动并同时向前移动,但又独立地移动,以使它们看起来没有编排? :-)
为了补偿正弦函数的相位(同时保持频率和幅度),您必须在sin(x)中向x 添加一个常数。
因此,您可以尝试transform.position += transform.right * Mathf.Sin (Time.time * 3f + i) * 1f;
我是唯一朝着玩家前进的目标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.