[Unity]物體在屏幕內隨機移動


  要求物體在屏幕內隨機移動,但不能超出屏幕范圍,那么需要注意兩點:

    1.獲取屏幕坐標,才能對物體移動加以限制。

    2.屏幕坐標和世界坐標的轉換。

  可以直接使用Screen.heightScreen.width獲取屏幕的尺寸,而不是直接寫死尺寸,否則在不同分辨率的設備上使用效果會有差異。

 

  代碼:

 1 using System.Collections;  2 using System.Collections.Generic;  3 using UnityEngine;  4 using Random = UnityEngine.Random;  5 
 6 public class RandomMove : MonoBehaviour  7 {  8 
 9     private float speed; 10     private Vector3 targetPosition; 11     void Start() 12  { 13         speed = 0.1f; 14         targetPosition = Camera.main.ScreenToWorldPoint(new Vector3(Random.Range(0f, Screen.width), Random.Range(0f, Screen.height))); 15 
16  } 17 
18     void Update() 19  { 20  RandomMoveFlower(); 21  } 22     private void RandomMoveFlower() 23  { 24         transform.position = Vector3.MoveTowards(transform.position, targetPosition, speed * Time.deltaTime); 25  } 26 }

 

  最開頭寫的using Random=UnityEngine.Random;是為了之后直接寫Random就好,而無需寫成UnityEngine.Random的形式,省事。

  Camera可以直接調用其功能,無需事先聲明了。

  Vector3和Vector2無論是在2D還是3D都可以使用,區別就是z軸坐標嘛,根據實際需求來設置。

  Time.deltaTime的作用可以自行百度,主要是為了去不同設備執行速率的差異化,換句話說就是讓不同性能的電腦運行起來效果是一樣的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM