【发布时间】:2022-12-09 07:37:56
【问题描述】:
基本上我正在创建一个游戏,你可以在屏幕上拖动并启动玩家以收集宝石,玩家还可以跳跃(非常短)并从左向右移动。我希望玩家能够左右移动角色并跳跃,而不是拖动和射击一次。问题在于我到目前为止所获得的代码,玩家需要做的就是一遍又一遍地发送拖放功能,让玩家飞起来。我想禁用它。我希望玩家有一次机会拖动并启动播放器。这将在重生后重置。
所以基本上我有以下代码。我想使用 Get Mouse Button Down 启用 lr(Line Renderer)一次,然后禁用它,然后在重生时重新启用它,依此类推。
LineRenderer lr;
Rigidbody2D rb;
public float power = 5f;
public float speed = 3.0f;
Vector2 startDragPos;
if (Input.GetMouseButtonDown(0))
startDragPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if (Input.GetMouseButton(0))
{
lr.enabled = true;
Vector2 endDragPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 _velocity = (endDragPos - startDragPos) * power;
Vector2[] trajectory = Plot(rb, (Vector2)transform.position, _velocity, 500);
lr.positionCount = trajectory.Length;
Vector3[] positions = new Vector3[trajectory.Length];
for(int i = 0; i < trajectory.Length; i++)
{
positions[i] = trajectory[i];
}
lr.SetPositions(positions);
}
else
{
lr.enabled = false;
}
if (Input.GetMouseButtonUp(0))
{
anim.SetTrigger ("normanLaunch");
soundEffect.Play();
Vector2 endDragPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2 _velocity = (endDragPos - startDragPos) * power;
rb.velocity = _velocity;
fallDetector.transform.position = new Vector3(transform.position.x, fallDetector.transform.position.y);
}
}
`
感谢您的帮助!
【问题讨论】:
标签: c# unityscript