要求物體在屏幕內隨機移動,但不能超出屏幕范圍,那么需要注意兩點:
1.獲取屏幕坐標,才能對物體移動加以限制。
2.屏幕坐標和世界坐標的轉換。
可以直接使用Screen.height和Screen.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的作用可以自行百度,主要是為了去不同設備執行速率的差異化,換句話說就是讓不同性能的電腦運行起來效果是一樣的。