[英]Move Character to touched Position 2D (Without RigidBody and Animated Movement) UNITY
美好的一天。 我正在尝试实现简单的操作,但没有任何效果。
所需的输出:
•玩家感动我的世界
•角色开始随着行走动画向该位置平滑移动
实际结果:
•玩家感动我的世界
•角色只是跳到终点,没有流畅的动作就没有
尝试过的事情:
• Vector2 finalPosition = Camera.main.ScreenToWorldPoint(position);
transform.position = finalPosition;
在这种情况下,角色会跳到最后一点
• Vector2 finalPosition = Camera.main.ScreenToWorldPoint(position);
transform.Translate(finalPosition);
在这种情况下,字符只会从屏幕上消失。
有什么办法吗?
您可以使用Vector2.Lerp()在两点之间平滑移动。
一些伪代码:
bool move;
float t;
Update()
{
if () // insert condition to begin movement
{
move = true;
t = 0; // reset timer
startPos = transform.position; // store current position for lerp
finalPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
if (move)
MovePlayer();
}
void MovePlayer()
{
t += Time.deltaTime / 3f; // 3 is seconds to take to move from start to end
transform.position = Vector2.Lerp(startPos, finalPosition, t);
if (t > 3)
{
move = false; // exit function
}
}
在update
:
transform.position += (final_pos - transform.position).normalized * Time.deltaTime;
这将方向添加到当前位置。使用增量时间缩放运动,您可以通过将所有速度乘以某个标量值(即任何float
值)来提高或降低速度。 请注意,最好是normalize
一次,而不是每帧normalize
,但这是一般的想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.