最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

使用unity制作一個(gè)寶可夢(mèng)——3.添加碰撞體

2023-06-08 21:52 作者:立志看完尚硅谷  | 我要投稿

最后一點(diǎn)沒(méi)看懂,反正照著寫(xiě)了,貼個(gè)代碼


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


//這是一個(gè)控制玩家的類(lèi),實(shí)現(xiàn)的功能有:

//1.上下左右移動(dòng)

//2.播放移動(dòng)動(dòng)畫(huà)


public class PlayerController : MonoBehaviour

{

??public float moveSpeed;?//玩家的移動(dòng)速度

??public LayerMask solidObjectsLayer;?//獲取房屋的圖層


??private bool isMoving;?//是否處在移動(dòng)

??private Animator animator;?//定義玩家的動(dòng)畫(huà)的狀態(tài)機(jī)


??private void Awake()?//Awake():生命周期函數(shù),當(dāng)組件被實(shí)例化并啟用時(shí),該方法將在其它方法之前調(diào)用一次

??{

????animator = GetComponent<Animator>();?//獲取到玩家的狀態(tài)機(jī)

??}


??private void Update()

??{

????if (!isMoving)

????{

??????var input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));

?????


??????if (input.x != 0) input.y = 0;?//限制角色走斜線


??????if (input != Vector2.zero)?//如果輸入的值不為0

??????{

????????//將輸入的x,y值賦予給moveX,moveY,用來(lái)控制角色的動(dòng)畫(huà)狀態(tài)

????????animator.SetFloat("moveX",input.x);

????????animator.SetFloat("moveY", input.y);


????????var targetPos = transform.position;?//targetPos:目標(biāo)的位置

????????targetPos.x += input.x;?????//x方向加上垂直方向輸入進(jìn)來(lái)的值

????????targetPos.y += input.y;?????//y方向加上水平方向輸入進(jìn)來(lái)的值


????????if (isWalkable(targetPos))?//如果移動(dòng)沒(méi)有被阻塞

??????????StartCoroutine(Move(targetPos));?//開(kāi)啟玩家移動(dòng)的協(xié)程,將目標(biāo)的位置作為參數(shù)傳遞過(guò)去

??????}

????}


????animator.SetBool("isMoving",isMoving);?//將isMoving的狀態(tài)賦予給狀態(tài)機(jī)

??}



??IEnumerator Move(Vector3 targetPos)

??{

????isMoving = true;


????// 循環(huán)判斷當(dāng)前位置與目標(biāo)位置之間的距離是否大于一個(gè)很小的數(shù)值

????while ((targetPos - transform.position).sqrMagnitude > Mathf.Epsilon)

????{

??????// 計(jì)算每幀應(yīng)該移動(dòng)的距離,并讓物體朝目標(biāo)位置移動(dòng)一步

??????transform.position = Vector3.MoveTowards(transform.position, targetPos, moveSpeed * Time.deltaTime);

??????// 讓程序等待下一幀再執(zhí)行

??????yield return null;

????}

????// 直接將物體移動(dòng)到精確定位到目標(biāo)位置上,避免偏差堆積

????transform.position = targetPos;


????isMoving = false;

??}



??private bool isWalkable(Vector3 targetPos)?//判斷行走是否被阻塞

??{

????if (Physics2D.OverlapCircle(targetPos, 0.2f, solidObjectsLayer) != null)

????{

??????return false;

????}

????return true;

??}

}

使用unity制作一個(gè)寶可夢(mèng)——3.添加碰撞體的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
定襄县| 洛川县| 毕节市| 元江| 延安市| 浙江省| 元江| 鸡泽县| 航空| 高台县| 栾城县| 儋州市| 临潭县| 乌鲁木齐市| 馆陶县| 西平县| 宣武区| 西盟| 阿鲁科尔沁旗| 永吉县| 丰原市| 房产| 加查县| 延长县| 盐源县| 青冈县| 东乌| 罗平县| 闽侯县| 西宁市| 正安县| 南乐县| 衡东县| 鲁甸县| 崇礼县| 白玉县| 全椒县| 剑阁县| 军事| 梁河县| 鄂托克旗|