Unity 2D物体移动
生活随笔
收集整理的這篇文章主要介紹了
Unity 2D物体移动
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一,設置
?
?二,腳本
1,PlayerController
using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerController : MonoBehaviour {private Rigidbody2D m_rg;public float MoveSpeed;public float JumpSpeed;//在角色下添加一個空物體//設置一個跳躍監測點public Transform CheckPoint;//設置一個跳躍監測半徑public float CheckRadius;//設置一個跳躍監測層---角色與地面的檢測public LayerMask WhatIsGround;//角色默認是否著地--truepublic bool isGround;private Animator Anim;//存儲復活點的位置信息public Vector2 RespawnPosition;public LevelManager theLevel;void Start () {m_rg = gameObject.GetComponent<Rigidbody2D>();Anim = gameObject.GetComponent<Animator>();//游戲剛開始時,玩家的重生點,就是當前的初始位置點RespawnPosition = transform.position;theLevel = FindObjectOfType<LevelManager>();}// Update is called once per framevoid Update () {// isGround = Physics2D.OverlapCircle(CheckPoint.position, CheckRadius, WhatIsGround);//m_rg.gameObject.transform.rotation= Quaternion.identity;//------------------Input.GetAxisRaw沒有小數值,只有整數,不會產生緩動------------------//角色水平移動//按住D鍵,判斷如果大于0,則向右開始移動if (Input.GetAxisRaw("Horizontal") > 0){m_rg.velocity = new Vector2(MoveSpeed, m_rg.velocity.y);//設置自身縮放的值transform.localScale = new Vector2(1f,1f);}//角色水平移動//按住A鍵,判斷如果小于0,則向左開始移動else if (Input.GetAxisRaw("Horizontal") < 0){m_rg.velocity = new Vector2(-MoveSpeed, m_rg.velocity.y);//如果new Vector2(-1f, 1f) x值為負數,則圖片進行反轉顯示transform.localScale = new Vector2(-1f, 1f);}else//角色水平移動//松開按鍵,判斷如果等于0,則停止移動 {m_rg.velocity = new Vector2(0, m_rg.velocity.y);}//角色按下空格鍵實現跳躍//禁止二連跳//要先判斷角色是否在地面上,在地面上可以跳,不在地面上則不能跳if (Input.GetButtonDown("Jump")&& isGround){m_rg.velocity = new Vector2(m_rg.velocity.x,JumpSpeed);}Anim.SetFloat("Speed", m_rg.velocity.x);Anim.SetBool("Grouned", isGround);}private void OnTriggerEnter2D(Collider2D collision){if (collision.tag=="KillPlane"){//gameObject.SetActive(false);//使當前玩家的位置點為,保存的復活點位置//transform.position = RespawnPosition; theLevel.Respawn();}//角色與當前的復活點進行碰撞檢測//把當前角色的位置信息,設置為重生的復活點if (collision.tag == "CheckPoint"){RespawnPosition = collision.transform.position;}}/// <summary>/// 實現角色跟隨移動平臺一起運動/// 把角色的父物體設置為移動平臺/// </summary>/// <param name="collision"></param>private void OnCollisionEnter2D(Collision2D collision){Debug.Log("碰撞到的那個吊毛叫什么名字:"+ collision.gameObject.name);if (collision.gameObject.tag == "MovePlatForm"){transform.parent = collision.transform;Debug.Log("碰撞到的那個吊毛的父物體什么名字:" + transform.parent);}}private void OnCollisionExit2D(Collision2D collision){if (collision.gameObject.tag == "MovePlatForm"){transform.parent = null;}} }
?
?
?2,MovePlatFromController
using System.Collections; using System.Collections.Generic; using UnityEngine;/// <summary> /// 平臺移動腳本 /// </summary> public class MovePlatFromController : MonoBehaviour {//要移動的物體public GameObject PlatForm;//要移動物體開始的點public Transform StartPoint;//要移動物體結束的點public Transform EndPoint;//要移動物體的移動速度public float MoveSpeed;//要移動到的目標點public Vector2 target;void Start () {target = EndPoint.position;}// Update is called once per framevoid Update () {//把物體移動到指定的位置點上PlatForm.transform.position = Vector2.MoveTowards(PlatForm.transform.position, target, MoveSpeed*Time.deltaTime);//實現物體來回移動if (PlatForm.transform.position == EndPoint.position){target = StartPoint.position;}if (PlatForm.transform.position == StartPoint.position){target = EndPoint.position;}} }
?
轉載于:https://www.cnblogs.com/yueqingli/p/10125555.html
總結
以上是生活随笔為你收集整理的Unity 2D物体移动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于eclipse的注释和反注释的快捷键
- 下一篇: 是你吗是什么歌呢