我有一個2D遊戲點擊移動遊戲。我想改進我的代碼,以便我的玩家動畫看起來不錯,例如這是我玩家的動畫看起來像的video。正如你所看到的,我的播放器的空閒狀態動畫並不是最好的。視頻還可以讓你看到我的動畫師,以防萬一我在混合樹或轉換過程中犯了錯誤。我該如何改進我的代碼,以便我的播放器的動畫效果不錯,並且我的播放器的空閒狀態動畫面臨着它所面對的正確方向。謝謝!Unity3D:提高玩家的動畫
private Animator anim;
public float speed = 15f;
private Vector3 target;
private bool touched;
private bool playerMovementRef;
void Start() {
target = transform.position;
anim = GetComponent<Animator>();
}
void Update() {
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);
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 {
if (Mathf.Approximately (transform.position.x, target.x) && Mathf.Approximately (transform.position.y, target.y)) {
touched = false;
anim.SetBool ("walking", false);
} else {
transform.position = Vector3.MoveTowards (transform.position, target, speed * Time.deltaTime);
}
}
}
}
更清楚,我想要做這樣的事情:http://imgur.com/j7gBeDA但我有我的代碼的問題,我很接近,它只是不朝向正確當它它處於空閒狀態。我已經檢查過「是否有退出時間」,這不是,所以我不知道我做錯了什麼。我也確信我debug.log它並沒有給我一個我正在尋找的答案。
謝謝你的回覆,我只是想知道我將在哪裏實現這個到我的代碼?對不起,我更喜歡小菜。我之前有人幫助我,但他或她沒有回覆,我已經等了4個月了。再次感謝您回覆如此迅速,我真的很感激它。 –
這不是「可插入」到你現在的實現中,這種方法是錯誤的,而不是語法/邏輯。如果您不確定如何繼續,我會建議先通過一些Unity教程,而不是處理複雜的2D動畫。 – sloth
謝謝您的提議,但如果您可以更詳細地解釋它,這將非常有幫助。我一直在尋找關於2D RPG點擊移動的統一教程,但我找不到任何。謝謝 –