当点击一下我想让角色走到鼠标位置。 但如果它按住鼠标按钮我想让它旋转角色。 但由于某种原因,它一直处于空闲状态。因此,当我点击一下时,角色会以小跳跃跳跃而不会走到鼠标位置。
如果我将删除if的整个部分(Input.GetMouseButton(0)),那么当点击鼠标时它会很好地走到鼠标位置但是一旦添加了这部分他就不会走路。
void Update()
{
if (Input.GetKeyDown(KeyCode.Mouse0))
{
_animator.CrossFade("Walk", 0);
Plane playerPlane = new Plane(Vector3.up, transform.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
float hitdist = 0.0f;
if (playerPlane.Raycast(ray, out hitdist))
{
Vector3 targetPoint = ray.GetPoint(hitdist);
targetPosition = ray.GetPoint(hitdist);
targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
destination = targetPosition;
}
}
if (Input.GetMouseButton(0))
{
_animator.CrossFade("Idle", 0);
RaycastHit hit;
Ray ray1 = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray1, out hit) && hit.collider.name != "ThirdPersonController")
{
transform.LookAt(hit.point);
}
else
{
transform.LookAt(ray1.GetPoint(100)); //the number here is compltely arbitrary
}
}
}
答案 0 :(得分:1)
Input.GetMouseButton(int)
将返回true 始终。 Input.GetMouseButtonDown(int)
在单击鼠标按钮的第一帧上返回true only 。
因此,鉴于您的代码,可能性是:
if
块。if
块都被执行。您的动画状态设置为Walk
,然后立即设置为Idle
,您的角色无法移动。if
块。您的动画状态设置为Idle
,角色无法移动。如果您决定使用这种特定的控制方案,您应该考虑实施某种延迟 - 也许应该将短于0.2秒的鼠标按键按下点击并按下超过0.2秒算作 hold 。这样你的谓词就不会重叠。