欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[Unity]物体在屏幕内随机移动

程序员文章站 2022-03-03 17:05:21
要求物体在屏幕内随机移动,但不能超出屏幕范围,那么需要注意两点: 1.获取屏幕坐标,才能对物体移动加以限制。 2.屏幕坐标和世界坐标的转换。 可以直接使用Screen.height和Screen.width获取屏幕的尺寸,而不是直接写死尺寸,否则在不同分辨率的设备上使用效果会有差异。 代码: 1 u ......

  要求物体在屏幕内随机移动,但不能超出屏幕范围,那么需要注意两点:

    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的作用可以自行百度,主要是为了去不同设备执行速率的差异化,换句话说就是让不同性能的电脑运行起来效果是一样的。