【发布时间】:2016-08-09 01:58:53
【问题描述】:
我在youtube 上关注了本教程。我花了一段时间,但我几乎已经从箭头移动转换为鼠标触摸。但是现在我遇到了这个问题,当角色停止移动时会发生闪烁。我查看了他发给我的链接,但它不起作用。请观看此视频以向您展示我在说什么about。有谁知道如何停止角色停止移动时发生的闪烁?这是我的代码:
private Animator anim;
public float speed = 15f;
private Vector3 target;
private bool touched;
void Start () {
target = transform.position;
anim = GetComponent<Animator> ();
}
void Update () {
touched = true;
if (Input.GetMouseButtonDown (0)) {
Vector3 mousePosition = Input.mousePosition;
mousePosition.z = 10; // distance from the camera
target = Camera.main.ScreenToWorldPoint(mousePosition);
target.z = transform.position.z;
}
var movementDirection = (target - transform.position).normalized;
if (movementDirection.x != 0 || movementDirection.y != 0) {
anim.SetBool("walking" , true);
anim.SetFloat("SpeedX" , movementDirection.x);
anim.SetFloat("SpeedY" , movementDirection.y);
Vector2 movement = new Vector2(
speed * movementDirection.x ,
speed * movementDirection.y);
movement *= Time.deltaTime;
transform.Translate(movement);
if (movementDirection.x < 0) {
anim.SetFloat("LastMoveX" , -1f);
}
else if (movementDirection.x > 0) {
anim.SetFloat("LastMoveX" , 1f);
}
else {
anim.SetFloat("LastMoveX" , 0f);
}
if (movementDirection.y > 0) {
anim.SetFloat("LastMoveY" , 1f);
}
else if (movementDirection.y < 0) {
anim.SetFloat("LastMoveY" , -1f);
}
else {
anim.SetFloat("LastMoveY" , 0f);
}
} else {
touched = false;
anim.SetBool("walking" , false);
}
}
【问题讨论】: