示例#1
0
        public Vector3 Update(Katamari katamari)
        {
            input.Set(0, 0, 0);

            input.x = Input.GetAxis("Horizontal");

            input.z = Input.GetAxis("Vertical");

            input.Normalize();

            input.y = -Input.GetAxis("Rotate");

            return(input);
        }
示例#2
0
        public void UpdatePosition(Katamari katamari)
        {
            float targetDistance = BOOM_SCALE * katamari.sphere.radius;

            if (targetDistance > orbitRadius)
            {
                orbitRadius = Mathf.Lerp(orbitRadius, targetDistance, Time.deltaTime);
            }

            //rotate around the global y axis and offset by our scale * radius in the boomDirection. basically it just orbits the katamari, farther the larger the katamari is.
            transform.position = katamari.transform.position + Quaternion.Euler(0, katamari.rotationY, 0) * boomDirection.normalized * orbitRadius;

            transform.LookAt(katamari.transform);
        }
        public void Detach(Katamari katamari)
        {
            transform.parent = null;
            gameObject.layer = 8;
            if (rB == null)
            {
                rB = gameObject.AddComponent <Rigidbody>();
            }
            rB.mass             = mass;
            rB.isKinematic      = false;
            rB.detectCollisions = true;

            //arbitrary explosion force to send stuff flying away a bit
            rB.AddExplosionForce(400.0f, katamari.transform.position, katamari.sphere.radius, 50.0f);

            collectedCollider.enabled   = false;
            uncollectedCollider.enabled = true;

            StartCoroutine(DoEnableCollect());
        }
示例#4
0
        public Vector3 Update(Katamari katamari)
        {
            input.Set(0, 0, 0);

            float leftHorizontal = Input.GetAxis("Horizontal");
            float leftVertical   = Input.GetAxis("Vertical");

            float rightHorizontal = Input.GetAxis("RightHorizontal");
            float rightVertical   = Input.GetAxis("RightVertical");

            //roughly based on http://strategywiki.org/wiki/Katamari_Damacy/Controls
            //both sticks forward -> 0, 0, 1
            //both sticks back -> 0, 0, -1
            //both sticks left -> -1, 0, 0
            //both sticks right -> 1, 0, 0
            //left forward, right back -> 0, 1, 0
            //left back, right forward -> 0, -1, 0

            //TODO: add boosting mechanics? quick 180?

            if (leftVertical > 0 && rightVertical > 0 || leftVertical < 0 && rightVertical < 0) //forward and backwards movement
            {
                input.z = (leftVertical + rightVertical) / 2.0f;
            }

            if (leftHorizontal > 0 && rightHorizontal > 0 || leftHorizontal < 0 && rightHorizontal < 0) //left and right movement
            {
                input.x = (leftHorizontal + rightHorizontal) / 2.0f;
            }

            if (leftVertical > rightVertical && leftVertical > 0) //turn right
            {
                input.y = (leftVertical - rightVertical) / 2.0f;
            }
            else if (rightVertical > leftVertical && rightVertical > 0) //turn left
            {
                input.y = -(rightVertical - leftVertical) / 2.0f;
            }

            return(input);
        }
示例#5
0
 public void Init(Katamari katamari)
 {
     orbitRadius = BOOM_SCALE * katamari.sphere.radius;
 }
 public void Attach(Katamari katamari)
 {
     uncollectedCollider.enabled = false;
     collectedCollider.enabled   = true;
 }