事件Event
- Interact 点击事件,当玩家点击物品或使用物品触发
- OnDrop 扔下事件,当玩家扔下物品触发
- OnOwnershipTransferred
- OnPickup捡起来事件,当捡起来触发
- OnPickupUseDown当物品手持,并且按下使用按钮
- OnPickupUseUp当手持物品,松开使用按钮
- OnPlayerJoined,当一名玩家进入房间时触发
- OnPlayerLeft,当一名玩家离开房间时触发
- OnSpawn
- OnStationEntered
- OnStationExited
- OnVideoEnd,当视频播放结束后触发
- OnVideoError,当视频播放失败后触发
- OnVideoLoop,当视频完成一次循环播放时触发
- OnVideoPause,当视频暂停后触发
- OnVideoPlay,视频播放器通过队列中新视频的开始、取消暂停或通过播放器交互来开始回放时触发
- OnVideoStart,视频播放器从暂停状态开始播放时触发
- OnVideoReady,当视频播放器加载完新视频时触发
- OnPlayerTriggerEnter,当玩家进入一个区域后触发
- OnPlayerTriggerStay,当玩家在区域内触发
- OnPlayerTriggerExit,当玩家胶囊离开区域后触发
- OnPlayerCollisionEnter,当玩家胶囊进入一个碰撞体触发
- OnPlayerCollisionStay,当玩家在碰撞体内触发
- OnPlayerCollisionExit,当玩家离开碰撞体触发
- OnPlayerParticleCollision,当粒子系统启用碰撞和发射碰撞消息后,粒子与胶囊碰撞时触发。
- OnPlayerRespawn,当玩家唤出菜单时触发
- Advanced Notes,所有节点都是具有类型。
参数
玩家初始设置
当玩家进入地图后可以设置玩家基本参数 jumpImpulse(跳跃高度), walkSpeed(走路速度), 和 runSpeed(跑步速度).
结构块 Is Valid 确认对象是否有效
结构块SetJumpImpulse 设置跳跃高度
结构块SetWalkSpeed设置走路速度
结构块SetRunSpeed设置跑步速度
结构块SetStrafeSpeed设置下落速度
结构块Get LocalPlayer获得玩家实例
镜子系统
需要添加VRC Ui Shape模块,确定该canvas能够点击。
事件结构块Custom Event
这个结构块通过接受事件触发
结构块SetActive 设置是否激活对象。(一般用于开关)
结构块Get activeSelf 得到对象是否被激活。
结构块UnaryNegation,bool取反。
切换模型系统
输入参数为角色模型参数
需要添加VRC Avatar Pedestal(Script) 模块,设置模型id
在udon中获得模型实例
结构块SetAvatarUse 设置玩家使用模型。
椅子系统
首先需要添加 VRC Station模块。
结构块UseAttachedStation 触发状态。
OnStationEntered触发状态后执行事件
结构块Get displayName 获得玩家的名称
结构块 Format 字符串结构器,修改字符串结构
OnStationExited离开状态后执行事件
切换材质
OnMouseDown鼠标按下后执行事件
UdonBehaviour参数模块,可以传入包含udon 的对象
参数传入包含udon 的对象
string参数模块,输入事件名称
结构块SendCustomEvent发送事件
Custom Event事件触发模块
输入接受事件的名称
Set material设置材质结构块
设置材质结构块需要输入网格对象
网格结构块
int 计算
计算模块Addition加法
计算模块Subtraction减法
计算模块Multiplication乘法
计算模块Division除法
计算模块Remainder余数
Time 时间
刷新事件块Update,随着时间更新进行计算
Get time得到当前时间的结构块。
GreaterThan大于结构块,如果是大于的话返回真
Branch支结构块,如果为真则执行,为假则执行另一条
Pickup 捡起触发
OnPickupUseDown 当捡起物品按下按钮触发
OnPickupUseUp 当捡起物品按下松开按钮触发
VRC ui面板
首先需要在最外层创建一个Canvas 然后创建plane
设置Render Mode 为World Space
给canvas添加组件 VRC ui
Layer改为Default
修改Ui Text最佳显示大小
提高字体清晰度
动态字体库
下载一个字体。阿里巴巴字体
将ttf文件拖到项目中。
开枪射击动画
播放自身的动画
播放粒子动画
Network
自动更新
创建一个属性 设置它为synced
修改这个值的时候就会触发更新
再创建OnDeserialization,将值传输给其他玩家
手动更新
Synchronization改为Manual手动更新
创建RequestSerialization模块
OnDeserialization 更新触发器
C#的脚本
Debug.log
Transform
Transform tr = this.gameObject.transform
Vector3 pos = this..gameObject.transform.position
物体的坐标
- transfrom.position 世界坐标
- transfrom.localPosition 本地坐标
设置坐标
帧更新
void Update(){
Time.time //当前游戏时间
Time.deltaTime 距离上次更新的时间差
}
移动物体
Vector3.pos = this.transform.localPosition;
pos.x + = 0.02f;
this.transform.localPosition = pos
匀速移动
float speed=3
float distance = speed*Time.deltaTime
Vector3.pos = this.transform.localPosition;
pos.x + =distance;
this.transform.localPosition = pos
相对移动
float speed=3
float distance = speed*Time.deltaTime
this.transform.Translate(0,0,distance,Space.Self)
运动方向
转向目标
this.transform.LookAt(flag.transform);
向‘前’运动,forward,+Z方向
this.transform.Translate(0,0,dz,Space.Self)
朝着目标运动,到达目标停止
向量测距:
p1 = 火车.transform.position
p2 = 火车.transform.position
p=p1-p2
distance = p.magnitude
是否大于和if模块
物体的旋转
欧拉角 Euler Angle
transform.eulerAngles = new Vector3(0,45,0)
transform.localEulerAngles = new Vector3(0,45,0)
相对旋转
transform.Rotate(dx,dy,dz,space)
控制父物体旋转
Transform parent = this.transform.parent;
parent.Rotate(dx,dy,dz,space)
脚本函数
消息函数
- Awake,初始化仅执行一次
- Start,初始化,仅执行一次
- Update,帧更新,每帧用一次
- OnEnable,每当组件启用时调用
- OnDisable,每当组件禁用时调用
设置优先级
数越低,优先级越高
值的类型
- 如:int,float,bool
- (struct):如Vector3,color
- 引用类型(class):如GameObject,Transform,MeshRenderer…
组件的调用
获得AudioSource组件
AudioSource audio = this.GetComponent<AudioSource>();
if( audio.isPlaying){
audio.Stop();
}
audio.Play();
audio.Stop();
组件参数
- AudioClip,音频资源
- Mute,是否禁音
- Loop,是否循环外放
- Volume,音量
消息调用
消息调用SendMessage
获取物体
GameObject node =node.GetComponent<RotateLogic>
RotateLogic rotateLogic = node.GetCompent<RotateLogic>
父子节点
Transform a22 = this.transform.Find("/222");
this.transform.SetParent(null); //设置父节点
ganmeObject.
资源的使用
AudioSource audioSource =GetComponent<AudioSource>();
audioSource.PlayOneShot(audioSuccess);
定时调用
继承自MonoBehaviour
- Invoke(func,delay),只调用一次
- InvokeRepeating(func,delay,interval),循环调用
- IsInvoking(func),是否正在调度中
- Cancellnvoke(func),取消调用、从调度中移除
向量
向量长度 L
Vector3 v=new Vector3(3,0,4);
float len = v.magnitude;
标准化Normalize:缩放一个向量,使其长度为1
Vector3 v=new Vector3(3,0,4);
Vector3 v2 = v1.normalized;
向量运算
向量测距离
Vector3 p1 = this.transform.position;//自己位置
Vector3 p2 = target.transform.position;/别人位置
Vector3 pdirection =p2-p1//方位向量
float distance = direction.magnitude
动态创建实例
创建Prefab之后,用API动态创建实例
Object.Instantiate(original,parent)
实例初始化
- parent,父节点
- position/localPosition 位置
- eulerAngles/localEulerAngles旋转
- Script 自带控制脚本
销毁实例
public static void Destory(Object obj,float t =0.0F);
VRC接口
加载模拟器
Note: this will be much easier soon with the Open Beta release of the VRChat Creator Companion, Coming Soon™
In your project, open the Unity Package Manager, click the + button and choose 'Add package from git URL...'.
Put in https://github.com/vrchat/packages.git?path=/packages/com.vrchat.base#vcc. Then wait as the package imports or press Ctrl+R to refresh if you have auto-refresh turned off.
Click the + button again and add this git url: https://github.com/vrchat/packages.git?path=/packages/com.vrchat.worlds#vcc
Press the + button one last time and add this url: https://github.com/vrchat-community/ClientSim.git?path=/ClientSim_UnityProject/Packages/com.vrchat.ClientSim#issue-12-make-docs
战斗系统
Get LocalPlayer 获得本地玩家实例
CombatSetup 设置游戏模式开始
CombatSetMaxHitpoints 设置玩家最大血量
CombatSetCurrentHitpoints 设置玩家当前血量
CombatSetRespawn 设置重生点
CombatSetDamageGraphic 受到伤害出现
其他系统
TeleportTo传送玩家位置
地图制作
地图常用插件
- probuilder
- polybrush
- bakery
https://image.online-convert.com/convert-to-svg
图片转SVG
抱脸效果
首先创建一个Camera,然后在相机子集里添加物品
删除音频接受模块,将摄像机拉远
因为vrchat会将camera属性关掉,所以需要在VRC进入后打开他
创建菜单面板
首先创建一个Canvas
然后
定时触发程序
网络
- onDeserialization 可以接受sysn的数据,改变系统值
- RequestSerialization 优先级更高一点
自动更新
手动更新
转换对象所有者权限
时间定时器
MMD动作播放
1、添加一个物体
添加插件VRC Station(这样设置)
添加控制器
将这个添加到项目中去
添加这个动画插件
创建udon
ui特效
获得曲线对应点位的对应值
缓慢跟随移
获得三维移动量
Lerp 两个坐标之间求插值
控制UI填充比例
fillAmount 设置图片填充比例
机器人npc
导航组件
触发事件
异形按钮
子对象自动对齐
偏好宽高
适配父对象
自适应高度
得到地图所有玩家
获得每秒的步行速度