コード例 #1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (onLooking)
        {
            Vector3 lookPos = lookAtObject.position - transform.position;
            if (lockYAngle)
            {
                lookPos.y = 0;
            }
            if (lookPos != Vector3.zero)
            {
                Quaternion rot = Quaternion.LookRotation(lookPos);
                transform.rotation = Quaternion.Slerp(transform.rotation, rot, Time.deltaTime * lookSpeed);
            }
        }
        if (onMoving && !useCharacterController)
        {
            if (destinationObject)
            {
                destinationPosition = destinationObject.position;
            }
            float distance = (transform.position - destinationPosition).magnitude;

            if (distance >= reachDistance)
            {
                transform.position = Vector3.MoveTowards(transform.position, destinationPosition, moveSpeed * Time.deltaTime);
            }

            if (distance <= reachDistance)
            {
                //onMoving = false;
                if (stopWhenReach)
                {
                    onMoving  = false;
                    onLooking = false;
                }
                if (sendMsgWhenReact != "")
                {
                    SendMessage(sendMsgWhenReact, SendMessageOptions.DontRequireReceiver);
                }
                if (source && !stopSending)
                {
                    stopSending = true;
                    source.NextEvent();
                    //source = null;
                }
            }
        }
        if (onMoving && useCharacterController)
        {
            if (destinationObject)
            {
                destinationPosition = destinationObject.position;
            }
            MoveTowardsTarget(destinationPosition);
        }
    }