首页 > 编程知识 正文

unity2d游戏源码,unity 2d 45度平滑移动

时间:2023-05-06 00:07:07 阅读:157185 作者:4987

unity 2D 人物按钮控制移动

using System.Collections;using System.Collections.Generic;using UnityEngine;kkdwx(typeof(Animator))]public class CharacterControllerScript : MonoBehaviour{ public float x; public float y; public float moveSpeed = 1.0f; public bool isMoving = false; public Animator animator; public Rigidbody2D rigidbody2; private void Awake() { animator = this.transform.GetComponent<Animator>(); rigidbody2 = this.transform.GetComponent<Rigidbody2D>(); } void Update() { if (Input.GetKeyDown(KeyCode.S)) { x = -1; y = 0; isMoving = true; } else if (Input.GetKeyDown(KeyCode.A)) { x = 0; y = -1; isMoving = true; } else if (Input.GetKeyDown(KeyCode.D)) { x = 0; y = 1; isMoving = true; } else if (Input.GetKeyDown(KeyCode.W)) { x = 1; y = 0; isMoving = true; } else if(Input.GetKeyUp(KeyCode.W)|ngdwk(KeyCode.S)|ngdwk(KeyCode.A)|ngdwk(KeyCode.D)) { isMoving = false; animator.SetFloat("X", x); animator.SetFloat("Y", y); animator.SetLayerWeight(1, 0); } if (isMoving) { animator.SetFloat("X", x); animator.SetFloat("Y", y); animator.SetLayerWeight(1, 1); Vector3 old = rigidbody2.transform.position; Vector3 vector3 = new Vector3(y, x, 0); rigidbody2.transform.position = Vector3.Lerp(old, old + vector3.normalized*0.1f , moveSpeed * Time.deltaTime); } }} using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;kkdwx(typeof(Animator))]public class CharacterButtonControl : MonoBehaviour{ public Button buttonUp; public Button buttonDown; public Button buttonleft; public Button buttonRight; public GameObject player; public Rigidbody2D rigidbody2D; private IEnumerator moveCoroutine; public Animator animator; // Start is called before the first frame update private void Awake() { rigidbody2D = player.GetComponent<Rigidbody2D>(); animator = this.transform.GetComponent<Animator>(); } // Update is called once per frame void Update() { buttonUp.onClick.AddListener(buttonUP); buttonDown.onClick.AddListener(buttonDOWN); buttonleft.onClick.AddListener(buttonLEFT); buttonRight.onClick.AddListener(buttonRIGHT); } public void buttonUP() { if (moveCoroutine != null) { StopCoroutine(moveCoroutine); } animator.SetLayerWeight(1, 1); animator.SetFloat("X", 1); animator.SetFloat("Y", 0); moveCoroutine = MoveCoroutine(new Vector3(0,1f,0), 2); StartCoroutine(moveCoroutine); } public void buttonDOWN() { if (moveCoroutine != null) { StopCoroutine(moveCoroutine); } animator.SetLayerWeight(1, 1); animator.SetFloat("X", -1); animator.SetFloat("Y", 0); moveCoroutine = MoveCoroutine(new Vector3(0, -1f, 0), 2); StartCoroutine(moveCoroutine); } public void buttonLEFT() { if (moveCoroutine != null) { StopCoroutine(moveCoroutine); } animator.SetLayerWeight(1, 1); animator.SetFloat("X", 0); animator.SetFloat("Y", -1); moveCoroutine = MoveCoroutine(new 野性的月饼, 0, 0), 2); StartCoroutine(moveCoroutine); } public void buttonRIGHT() { if (moveCoroutine != null) { StopCoroutine(moveCoroutine); } animator.SetLayerWeight(1, 1); animator.SetFloat("X", 0); animator.SetFloat("Y", 1); moveCoroutine = MoveCoroutine(new Vector3(1f, 0, 0), 2); StartCoroutine(moveCoroutine); } private IEnumerator MoveCoroutine(Vector3 newPositon, float time) { Vector3 startPos = rigidbody2D.transform.position; hxdsn = rigidbody2D.transform.position + newPositon; for (float t = 0; t < time; t += Time.deltaTime) { rigidbody2D.transform.position = Vector3.Lerp(startPos, endPos, t / time); yield return 0; } rigidbody2D.transform.position = endPos; animator.SetLayerWeight(1, 0); }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。