鼠标旋转缓动"/>
Unity3D根据鼠标旋转缓动
1.旋转部分
u3d中的一般旋转:
transform.Rotate(Vector3.back, 10f, Space.Self); 这是根据自身坐标轴做旋转,10f是旋转单位,同时这里的Space可以改成Space.World,变为根据世界坐标轴旋转
另外一种围绕旋转:
transform.RotateAround(GameObject.Find("Cube1").transform.position, Vector3.right, 5f); 在这里根据“Cube1" 物体的坐标进行围绕旋转,vector3.right是方向。
2.鼠标移动:
根据鼠标旋转,就是判断鼠标的移动方向与距离:鼠标的位置:Vector3 vM1 = Input.mousePosition; 记录第一次的鼠标位置,第二次的鼠标位置减去第一次的位置就是移动的位置。
获取鼠标移动的X轴长度: float fLeft = vM2.x - vM1.x;
fLeft > 0 则表示往世界坐标轴的X方向移动。
3.缓动效果:
给物体添加一个旋转,比如 transform.Rotate(Vector3.back, fSpeed, Space.Self);fSpeed初始值为0.5f,每一帧减去0.01f,则会出现旋转速度慢慢降低的效果。主要是在判断何时让他缓动比较麻烦。
4.其他:
物体隐藏方法:gameObject.SetActive(false); 在物体Active设置为false之后就不能通过GameObject.Find方法找到该物体了,以下方法可以解决:GameObject go;
go = GameObject.Find("wuti");
这样就可以根据go对象来设置SetActive(false)之后再设置成true。如果根据这种方法给自身设置false则无用,因为设置为false之后脚本也停止运行了。
动画的播放与停止,判断是否结束:
播放:transform.animation.Play(); 把动画放在物体上,这样就播放了。
停止:animation.Stop();
判断结束:(!(animation.IsPlaying("Take 001") && animation["Take 001"].normalizedTime < 1.0f))
animation.IsPlaying("Take 001") 表示是否在播放该动画
animation["Take 001"].normalizedTime < 1.0f) 表示是否还在第一次播放中,第二次播放则大于1f
倒播: animation["Take 001"].speed = -1; 然后再play().
更多推荐
Unity3D根据鼠标旋转缓动
发布评论