要求物體在螢屏內隨機移動,但不能超出螢屏范圍,那么需要注意兩點:
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的作用可以自行百度,主要是為了去不同設備執行速率的差異化,換句話說就是讓不同性能的電腦運行起來效果是一樣的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/288924.html
標籤:.NET技术
