Esempio n. 1
0
        public static void InitBall(string prefabName)
        {
            RigidBuildInfo info = new RigidBuildInfo
            {
                category      = StageObjectCategory.Ball,
                id            = StageManager.instance.GetMaxID(StageObjectCategory.Ball) + 1,
                prefabName    = prefabName,
                collisionMode = CollisionDetectionMode.Continuous,
                drag          = 0.5f, //空气阻力,用起来很赞
                //position 需要初始位置
            };

            GameManager.instance.SpawnStageObject(info, BuildType.Server);
            //ServerSend.StageObjectSpawned(info);
        }
Esempio n. 2
0
        public override void Enter()
        {
            base.Enter();
            //playerPos = cubePlayer.transform.position;
            //Vector3 InitPos = playerPos + new Vector3(1, 0, 1);
            RigidBuildInfo info = new RigidBuildInfo
            {
                category    = StageObjectCategory.Dynamic,
                id          = StageManager.instance.GetMaxID(StageObjectCategory.Dynamic) + 1,
                mass        = 50,
                useGravity  = false,
                drag        = 0f,
                angularDrag = 0f,
                prefabName  = "RoadBlock",
                constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ,
                sendFlags   = SendFlag.Position | SendFlag.Rotation | SendFlag.LocalScale,
                //position = InitPos,
                //rotation = Quaternion.identity,
                //initForce = Vector3.zero,
            };

            Vector3 playerPos = cubePlayer.transform.position;
            List <BaseStageObject> objList = new List <BaseStageObject>();

            for (int i = 0; i < 8; i++)
            {
                RigidBuildInfo newInfo = (RigidBuildInfo)info.Clone();
                newInfo.position      = playerPos + initPosList[i];
                newInfo.initForce     = initPosList[i] * 5;
                newInfo.initForceMode = ForceMode.VelocityChange;
                newInfo.id           += i;
                BaseStageObject obj = GameManager.instance.SpawnStageObject(newInfo, BuildType.Server);
                Player.AddPlayerPrefix(obj.gameObject, cubePlayer); //只有服务端名字会改掉,用于标识这是player的所有物
                //obj.transform.parent = cubePlayer.transform; //不能设为player的子物体,不然player转的时候会一起转
                //obj.transform.forward = initPosList[i].normalized;
                objList.Add(obj);
                ServerSend.StageObjectSpawned(newInfo);
            }
            //Rigidbody rig = obj.GetComponent<Rigidbody>();
            GameManager.instance.StartCoroutine(BlockMove(playerPos, objList)); //不这么写的话关掉游戏携程跑不完,那些块块就不会销毁,所以得挂在一个场景中不会被销毁的东西上
            Exit();
        }