日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Unity 2D物体移动

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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物体移动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。