[Unity]物体在屏幕内随机移动
程序员文章站
2022-06-18 14:14:41
要求物体在屏幕内随机移动,但不能超出屏幕范围,那么需要注意两点: 1.获取屏幕坐标,才能对物体移动加以限制。 2.屏幕坐标和世界坐标的转换。 可以直接使用Screen.height和Screen.width获取屏幕的尺寸,而不是直接写死尺寸,否则在不同分辨率的设备上使用效果会有差异。 代码: 1 u ......
要求物体在屏幕内随机移动,但不能超出屏幕范围,那么需要注意两点:
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的作用可以自行百度,主要是为了去不同设备执行速率的差异化,换句话说就是让不同性能的电脑运行起来效果是一样的。