用户:
guxia666查看:2 回复:19 评论:2 创建时间:2022-10-11T10:20:11
首先大家应该都知道视角这个《东西》,那么今天我们就讲讲视角的所有的代码 * 1.第一视角(这个很简单并且API都有就不再讲述)
world.onPlayerJoin(({entity})=>{
entity.player.cameraMode = Box3CameraMode.FPS;
}) * 2.第三视角(这个很简单并且API都有就不再讲述)
world.onPlayerJoin(({entity})=>{
entity.player.cameraMode = Box3CameraMode.FOLLOW;
}) * 3.隐藏API:2D视角(横面)
world.onPlayerJoin(async function({entity}){
entity.player.cameraMode=Box3CameraMode.RELATIVE;
entity.player.cameraPosition=new Box3Vector3(-0.01,40,0);
entity.player.swapInputDirection=true;
entity.player.reverseInputDirection=Box3InputDirection.HORIZONTAL;
entity.player.cameraFreezedAxis=Box3CameraFreezedAxis.Y;
entity.player.freezedForwardDirection=new Box3Vector3(0,0,1);
});
效果图:

world.onPlayerJoin(async({ entity })=> {
//设置视角
entity.player.cameraMode = "relative"
entity.player.cameraTarget.y = 1
entity.player.cameraPosition.set(0, 0, -15)//3个数随便调,假设是a1,a2,a3,那么这一行的意思就是指从x+a1,y+a2,z+a3的地方看你()
//禁用WS
entity.player.disableInputDirection = Box3InputDirection.VERTICAL;//这东西是禁止ws的
entity.player.swapInputDirection = true//把这一行注释了后就可以搞事情了(?)
//防止移动出错
entity.player.freezedForwardDirection = new Box3Vector3(1, 0, 0);
entity.collides.boolean = false
})
效果图:

world.onPlayerJoin(async({ entity })=> {
entity.player.cameraFovY += 0.25;
}) * 相信大家用了第4,5的代码后再切换第一视角,第三视角会出现锁视角的《特性》,所以: * 6.解除锁视角
entity.player.swapInputDirection = false;
entity.player.freezedForwardDirection = null
entity.player.reverseInputDirection = Box3InputDirection.NONE * 下面就是神奇的fixed的用法 * 首先我先讲解一下fixed与4,5的区别哈 * 他与4,5的区别就是:4,5能够随着玩家的移动垂直于玩家的锁视角也随之移动,而fixed就有所不同,fixed是不随着玩家的移动而移动 * 那么我们知道区别了就开始fixed的用法 * (1)与4,5近似(2D) 首先我先讲一个 entity.player.cameraPosition,entity.player.cameraTarget的作用哈 entity.player.cameraPosition 是固定视角(FIXED)下,镜头的眼睛位置,entity.player.cameraTarget是固定视角(FIXED)下镜头所朝向的目标点,当然还有
cameraUp,cameraUp是固定视角(FIXED)下,镜头向上的矢量
world.onPlayerJoin(({entity})=>{
entity.player.cameraMode=Box3CameraMode.FIXED;
entity.player.cameraPosition = new Box3Vector3(44, 0, 144)
entity.player.cameraTarget = new Box3Vector3(44, 0, 144)
})
数值的话大家自己调吧(作者懒)
* (2)《大片》视角的移动(重重之重)world.onPlayerJoin(async function({entity}){
entity.player.directMessage('看完后自动关闭')
entity.player.enableAction0 = false;
entity.player.enableAction1 = false;
entity.player.cameraMode = Box3CameraMode.FIXED;
entity.player.animate([
{ cameraPosition: new Box3Vector3(-22, 128, -22), cameraTarget: new Box3Vector3(-22, 20, -22), duration: 1 },
{ cameraPosition: new Box3Vector3(150, 128, 150), cameraTarget: new Box3Vector3(0, 20, 0), duration: 1 },
{ cameraPosition: new Box3Vector3(30, 128, 150), cameraTarget: new Box3Vector3(128, 20, 0), duration: 1 },
{ cameraPosition: new Box3Vector3(30, 30, 150), cameraTarget: new Box3Vector3(128, 20, 0), duration: 1 },
{ cameraPosition: new Box3Vector3(150, 30, 150), cameraTarget: new Box3Vector3(0, 20, 0), duration: 1 },
{ cameraPosition: new Box3Vector3(150, 30, -22), cameraTarget: new Box3Vector3(0, 20, 128), duration: 1 },
{ cameraPosition: new Box3Vector3(-22, 30, -22), cameraTarget: new Box3Vector3(128, 20, 128), duration: 1 },
{ cameraPosition: new Box3Vector3(150, 128, 150), cameraTarget: new Box3Vector3(0, 20, 0), duration: 1 },
{ cameraPosition: new Box3Vector3(172, 59, 209), cameraTarget: new Box3Vector3(28, 50, 150), duration: 1 },
{ cameraPosition: new Box3Vector3(entity.position.x, entity.position.y + 1, entity.position.z), cameraTarget: new Box3Vector3(entity.position.x, entity.position.y, entity.position.z), duration: 1 },
], {
iterations: 1,
duration: 16 * 50,
})
await sleep(50 * 1000)
entity.player.cameraMode = Box3CameraMode.FOLLOW;
entity.player.enableAction0 = true;
entity.player.enableAction1 = true;
})
好了,这一期的视角的应用就到此为止了
在最后我想问大家,你学废了么![]()